Skip to content

Commit c17d200

Browse files
authored
Added few more tokenizer tests. (#9300)
* Add few more tokeizer tests * Rename files under test/language * Fix linter issues.
1 parent fa9a13f commit c17d200

5 files changed

Lines changed: 75 additions & 1 deletion

File tree

File renamed without changes.
File renamed without changes.
File renamed without changes.
Lines changed: 75 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import * as assert from 'assert';
66
import { TextRangeCollection } from '../../client/language/textRangeCollection';
77
import { Tokenizer } from '../../client/language/tokenizer';
8-
import { TokenType } from '../../client/language/types';
8+
import { TokenizerMode, TokenType } from '../../client/language/types';
99

1010
// tslint:disable-next-line:max-func-body-length
1111
suite('Language.Tokenizer', () => {
@@ -380,4 +380,78 @@ suite('Language.Tokenizer', () => {
380380
assert.equal(t.length, lengths[i], `Length ${t.length} at ${i} (text ${text.substr(t.start, t.length)}), expected ${lengths[i]}`);
381381
}
382382
});
383+
384+
[-1, 10].forEach(start => {
385+
test(`Exceptions: out-of-range start = ${start}`, () => {
386+
assert.throws(() => {
387+
new Tokenizer().tokenize('', start, 0, TokenizerMode.Full);
388+
}, new Error('Invalid range start'));
389+
});
390+
});
391+
[-1, 10].forEach(length => {
392+
test(`Exceptions: out-of-range length = ${length}`, () => {
393+
assert.throws(() => {
394+
new Tokenizer().tokenize('abc', 1, length, TokenizerMode.Full);
395+
}, new Error('Invalid range length'));
396+
});
397+
});
398+
[
399+
['(', TokenType.OpenBrace],
400+
[')', TokenType.CloseBrace],
401+
['[', TokenType.OpenBracket],
402+
[']', TokenType.CloseBracket],
403+
['{', TokenType.OpenCurly],
404+
['}', TokenType.CloseCurly],
405+
[',', TokenType.Comma],
406+
[':', TokenType.Colon],
407+
[';', TokenType.Semicolon],
408+
['.', TokenType.Operator]
409+
].forEach(pair => {
410+
const text: string = pair[0] as string;
411+
const expected = pair[1];
412+
test(`Character tokens: ${text}`, () => {
413+
const tokens = new Tokenizer().tokenize(text);
414+
assert.equal(tokens.getItemAt(0).type, expected);
415+
});
416+
});
417+
[
418+
['1', TokenType.Number],
419+
['-1', TokenType.Number],
420+
['+1', TokenType.Number],
421+
['.1', TokenType.Number],
422+
['-.1', TokenType.Number],
423+
['+.1', TokenType.Number],
424+
['1_1', TokenType.Number],
425+
['_1', TokenType.Identifier],
426+
['-0x1', TokenType.Number],
427+
['-0X1', TokenType.Number],
428+
['-0b1', TokenType.Number],
429+
['-0B1', TokenType.Number],
430+
['-0o1', TokenType.Number],
431+
['-0O1', TokenType.Number]
432+
].forEach(pair => {
433+
const text: string = pair[0] as string;
434+
const expected = pair[1];
435+
test(`Possible numbers: ${text}`, () => {
436+
const tokens = new Tokenizer().tokenize(text);
437+
const token = tokens.getItemAt(0);
438+
assert.equal(token.type, expected);
439+
});
440+
});
441+
[
442+
['(-1', TokenType.Number],
443+
['[+1', TokenType.Number],
444+
[',-1', TokenType.Number],
445+
[':+1', TokenType.Number],
446+
[';+1', TokenType.Number],
447+
['=+1', TokenType.Number]
448+
].forEach(pair => {
449+
const text: string = pair[0] as string;
450+
const expected = pair[1];
451+
test(`Numbers after braces or operators: ${text}`, () => {
452+
const tokens = new Tokenizer().tokenize(text);
453+
const token = tokens.getItemAt(1);
454+
assert.equal(token.type, expected);
455+
});
456+
});
383457
});

0 commit comments

Comments
 (0)