blob: f7307633bd6bc7b7b83b303d21519ec346b224a3 [file] [log] [blame]
import * as assert from 'assert';
import * as path from 'path';
import * as TM from '../src/semantic-highlighting';
suite('SemanticHighlighting Tests', () => {
test('Parses arrays of textmate themes.', async () => {
const themePath =
path.join(__dirname, '../../test/assets/includeTheme.jsonc');
const scopeColorRules = await TM.parseThemeFile(themePath);
const getScopeRule = (scope: string) =>
scopeColorRules.find((v) => v.scope === scope);
assert.equal(scopeColorRules.length, 3);
assert.deepEqual(getScopeRule('a'), {scope : 'a', foreground : '#fff'});
assert.deepEqual(getScopeRule('b'), {scope : 'b', foreground : '#000'});
assert.deepEqual(getScopeRule('c'), {scope : 'c', foreground : '#bcd'});
});
test('Decodes tokens correctly', () => {
const testCases: string[] = [
'AAAAAAABAAA=', 'AAAAAAADAAkAAAAEAAEAAA==',
'AAAAAAADAAkAAAAEAAEAAAAAAAoAAQAA'
];
const expected = [
[ {character : 0, scopeIndex : 0, length : 1} ],
[
{character : 0, scopeIndex : 9, length : 3},
{character : 4, scopeIndex : 0, length : 1}
],
[
{character : 0, scopeIndex : 9, length : 3},
{character : 4, scopeIndex : 0, length : 1},
{character : 10, scopeIndex : 0, length : 1}
]
];
testCases.forEach((testCase, i) => assert.deepEqual(
TM.decodeTokens(testCase), expected[i]));
});
});