monaco-sql-languages
Version:
SQL languages for the Monaco Editor, based on monaco-languages.
57 lines (56 loc) • 2.38 kB
JavaScript
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
import '../all.contributions';
import { loadLanguage } from '../_.contribution';
import * as assert from 'assert';
import { editor } from '../fillers/monaco-editor-core';
function timeout(ms) {
return new Promise((resolve) => {
setTimeout(resolve, ms);
});
}
export function testTokenization(_language, tests) {
let languages;
if (typeof _language === 'string') {
languages = [_language];
}
else {
languages = _language;
}
let mainLanguage = languages[0];
test(mainLanguage + ' tokenization', () => __awaiter(this, void 0, void 0, function* () {
yield Promise.all(languages.map((l) => loadLanguage(l)));
yield timeout(0);
runTests(mainLanguage, tests);
}));
}
function runTests(languageId, tests) {
tests.forEach((test) => runTest(languageId, test));
}
function runTest(languageId, test) {
let text = test.map((t) => t.line).join('\n');
let actualTokens = editor.tokenize(text, languageId);
let actual = actualTokens.map((lineTokens, index) => {
return {
line: test[index].line,
tokens: lineTokens.map((t) => {
return {
startIndex: t.offset,
type: t.type
};
})
};
});
assert.deepStrictEqual(actual, test);
}