Path: blob/main/extensions/copilot/src/extension/prompts/node/test/fixtures/strings.test-example.summarized.ts
13406 views
1suite('Strings', () => {23test('format', () => {…});45test('format2', () => {…});67test('lcut', () => {8assert.strictEqual(strings.lcut('test string 0.1.2.3', 3), '2.3');910assert.strictEqual(strings.lcut('', 10), '');11assert.strictEqual(strings.lcut('a', 10), 'a');12});1314test('escape', () => {15assert.strictEqual(strings.escape(''), '');16assert.strictEqual(strings.escape('foo'), 'foo');17assert.strictEqual(strings.escape('foo bar'), 'foo bar');18assert.strictEqual(strings.escape('<foo bar>'), '<foo bar>');19assert.strictEqual(strings.escape('<foo>Hello</foo>'), '<foo>Hello</foo>');20});2122test('ltrim', () => {23assert.strictEqual(strings.ltrim('foo', 'f'), 'oo');24assert.strictEqual(strings.ltrim('foo', 'o'), 'foo');25assert.strictEqual(strings.ltrim('http://www.test.de', 'http://'), 'www.test.de');26assert.strictEqual(strings.ltrim('/foo/', '/'), 'foo/');27assert.strictEqual(strings.ltrim('//foo/', '/'), 'foo/');28assert.strictEqual(strings.ltrim('/', ''), '/');29assert.strictEqual(strings.ltrim('/', '/'), '');30assert.strictEqual(strings.ltrim('///', '/'), '');31assert.strictEqual(strings.ltrim('', ''), '');32assert.strictEqual(strings.ltrim('', '/'), '');33});3435test('rtrim', () => {36assert.strictEqual(strings.rtrim('foo', 'o'), 'f');37assert.strictEqual(strings.rtrim('foo', 'f'), 'foo');38assert.strictEqual(strings.rtrim('http://www.test.de', '.de'), 'http://www.test');39assert.strictEqual(strings.rtrim('/foo/', '/'), '/foo');40assert.strictEqual(strings.rtrim('/foo//', '/'), '/foo');41assert.strictEqual(strings.rtrim('/', ''), '/');42assert.strictEqual(strings.rtrim('/', '/'), '');43assert.strictEqual(strings.rtrim('///', '/'), '');44assert.strictEqual(strings.rtrim('', ''), '');45assert.strictEqual(strings.rtrim('', '/'), '');46});4748test('trim', () => {49assert.strictEqual(strings.trim(' foo '), 'foo');50assert.strictEqual(strings.trim(' foo'), 'foo');51assert.strictEqual(strings.trim('bar '), 'bar');52assert.strictEqual(strings.trim(' '), '');53assert.strictEqual(strings.trim('foo bar', 'bar'), 'foo ');54});5556test('trimWhitespace', () => {57assert.strictEqual(' foo '.trim(), 'foo');58assert.strictEqual(' foo '.trim(), 'foo');59assert.strictEqual(' foo'.trim(), 'foo');60assert.strictEqual('bar '.trim(), 'bar');61assert.strictEqual(' '.trim(), '');62assert.strictEqual(' '.trim(), '');63});6465test('lastNonWhitespaceIndex', () => {66assert.strictEqual(strings.lastNonWhitespaceIndex('abc \t \t '), 2);67assert.strictEqual(strings.lastNonWhitespaceIndex('abc'), 2);68assert.strictEqual(strings.lastNonWhitespaceIndex('abc\t'), 2);69assert.strictEqual(strings.lastNonWhitespaceIndex('abc '), 2);70assert.strictEqual(strings.lastNonWhitespaceIndex('abc \t \t '), 2);71assert.strictEqual(strings.lastNonWhitespaceIndex('abc \t \t abc \t \t '), 11);72assert.strictEqual(strings.lastNonWhitespaceIndex('abc \t \t abc \t \t ', 8), 2);73assert.strictEqual(strings.lastNonWhitespaceIndex(' \t \t '), -1);74});7576test('containsRTL', () => {77assert.strictEqual(strings.containsRTL('a'), false);78assert.strictEqual(strings.containsRTL(''), false);79assert.strictEqual(strings.containsRTL(strings.UTF8_BOM_CHARACTER + 'a'), false);80assert.strictEqual(strings.containsRTL('hello world!'), false);81assert.strictEqual(strings.containsRTL('a📚📚b'), false);82assert.strictEqual(strings.containsRTL('هناك حقيقة مثبتة منذ زمن طويل'), true);83assert.strictEqual(strings.containsRTL('זוהי עובדה מבוססת שדעתו'), true);84});8586test('issue #115221: isEmojiImprecise misses ⭐', () => {87const codePoint = strings.getNextCodePoint('⭐', '⭐'.length, 0);88assert.strictEqual(strings.isEmojiImprecise(codePoint), true);89});9091test('isBasicASCII', () => {92function assertIsBasicASCII(str: string, expected: boolean): void {93assert.strictEqual(strings.isBasicASCII(str), expected, str + ` (${str.charCodeAt(0)})`);94}95assertIsBasicASCII('abcdefghijklmnopqrstuvwxyz', true);96assertIsBasicASCII('ABCDEFGHIJKLMNOPQRSTUVWXYZ', true);97assertIsBasicASCII('1234567890', true);98assertIsBasicASCII('`~!@#$%^&*()-_=+[{]}\\|;:\'",<.>/?', true);99assertIsBasicASCII(' ', true);100assertIsBasicASCII('\t', true);101assertIsBasicASCII('\n', true);102assertIsBasicASCII('\r', true);103104let ALL = '\r\t\n';105for (let i = 32; i < 127; i++) {106ALL += String.fromCharCode(i);107}108assertIsBasicASCII(ALL, true);109110assertIsBasicASCII(String.fromCharCode(31), false);111assertIsBasicASCII(String.fromCharCode(127), false);112assertIsBasicASCII('ü', false);113assertIsBasicASCII('a📚📚b', false);114});115116test('createRegExp', () => {117// Empty118assert.throws(() => strings.createRegExp('', false));119120// Escapes appropriately121assert.strictEqual(strings.createRegExp('abc', false).source, 'abc');122assert.strictEqual(strings.createRegExp('([^ ,.]*)', false).source, '\\(\\[\\^ ,\\.\\]\\*\\)');123assert.strictEqual(strings.createRegExp('([^ ,.]*)', true).source, '([^ ,.]*)');124125// Whole word126assert.strictEqual(strings.createRegExp('abc', false, { wholeWord: true }).source, '\\babc\\b');127assert.strictEqual(strings.createRegExp('abc', true, { wholeWord: true }).source, '\\babc\\b');128assert.strictEqual(strings.createRegExp(' abc', true, { wholeWord: true }).source, ' abc\\b');129assert.strictEqual(strings.createRegExp('abc ', true, { wholeWord: true }).source, '\\babc ');130assert.strictEqual(strings.createRegExp(' abc ', true, { wholeWord: true }).source, ' abc ');131132const regExpWithoutFlags = strings.createRegExp('abc', true);133assert(!regExpWithoutFlags.global);134assert(regExpWithoutFlags.ignoreCase);135assert(!regExpWithoutFlags.multiline);136137const regExpWithFlags = strings.createRegExp('abc', true, { global: true, matchCase: true, multiline: true });138assert(regExpWithFlags.global);139assert(!regExpWithFlags.ignoreCase);140assert(regExpWithFlags.multiline);141});142143test('regExpContainsBackreference', () => {144assert(strings.regExpContainsBackreference('foo \\5 bar'));145assert(strings.regExpContainsBackreference('\\2'));146assert(strings.regExpContainsBackreference('(\\d)(\\n)(\\1)'));147assert(strings.regExpContainsBackreference('(A).*?\\1'));148assert(strings.regExpContainsBackreference('\\\\\\1'));149assert(strings.regExpContainsBackreference('foo \\\\\\1'));150151assert(!strings.regExpContainsBackreference(''));152assert(!strings.regExpContainsBackreference('\\\\1'));153assert(!strings.regExpContainsBackreference('foo \\\\1'));154assert(!strings.regExpContainsBackreference('(A).*?\\\\1'));155assert(!strings.regExpContainsBackreference('foo \\d1 bar'));156assert(!strings.regExpContainsBackreference('123'));157});158159test('getLeadingWhitespace', () => {160assert.strictEqual(strings.getLeadingWhitespace(' foo'), ' ');161assert.strictEqual(strings.getLeadingWhitespace(' foo', 2), '');162assert.strictEqual(strings.getLeadingWhitespace(' foo', 1, 1), '');163assert.strictEqual(strings.getLeadingWhitespace(' foo', 0, 1), ' ');164assert.strictEqual(strings.getLeadingWhitespace(' '), ' ');165assert.strictEqual(strings.getLeadingWhitespace(' ', 1), ' ');166assert.strictEqual(strings.getLeadingWhitespace(' ', 0, 1), ' ');167assert.strictEqual(strings.getLeadingWhitespace('\t\tfunction foo(){', 0, 1), '\t');168assert.strictEqual(strings.getLeadingWhitespace('\t\tfunction foo(){', 0, 2), '\t\t');169});170171test('fuzzyContains', () => {172assert.ok(!strings.fuzzyContains((undefined)!, null!));173assert.ok(strings.fuzzyContains('hello world', 'h'));174assert.ok(!strings.fuzzyContains('hello world', 'q'));175assert.ok(strings.fuzzyContains('hello world', 'hw'));176assert.ok(strings.fuzzyContains('hello world', 'horl'));177assert.ok(strings.fuzzyContains('hello world', 'd'));178assert.ok(!strings.fuzzyContains('hello world', 'wh'));179assert.ok(!strings.fuzzyContains('d', 'dd'));180});181182test('startsWithUTF8BOM', () => {183assert(strings.startsWithUTF8BOM(strings.UTF8_BOM_CHARACTER));184assert(strings.startsWithUTF8BOM(strings.UTF8_BOM_CHARACTER + 'a'));185assert(strings.startsWithUTF8BOM(strings.UTF8_BOM_CHARACTER + 'aaaaaaaaaa'));186assert(!strings.startsWithUTF8BOM(' ' + strings.UTF8_BOM_CHARACTER));187assert(!strings.startsWithUTF8BOM('foo'));188assert(!strings.startsWithUTF8BOM(''));189});190191test('stripUTF8BOM', () => {192assert.strictEqual(strings.stripUTF8BOM(strings.UTF8_BOM_CHARACTER), '');193assert.strictEqual(strings.stripUTF8BOM(strings.UTF8_BOM_CHARACTER + 'foobar'), 'foobar');194assert.strictEqual(strings.stripUTF8BOM('foobar' + strings.UTF8_BOM_CHARACTER), 'foobar' + strings.UTF8_BOM_CHARACTER);195assert.strictEqual(strings.stripUTF8BOM('abc'), 'abc');196assert.strictEqual(strings.stripUTF8BOM(''), '');197});198199test('containsUppercaseCharacter', () => {200[201[null, false],202['', false],203['foo', false],204['föö', false],205['ناك', false],206['מבוססת', false],207['😀', false],208['(#@()*&%()@*#&09827340982374}{:">?></\'\\~`', false],209210['Foo', true],211['FOO', true],212['FöÖ', true],213['FöÖ', true],214['\\Foo', true],215].forEach(([str, result]) => {216assert.strictEqual(strings.containsUppercaseCharacter(<string>str), result, `Wrong result for ${str}`);217});218});219220221222test('containsUppercaseCharacter (ignoreEscapedChars)', () => {223[224['\\Woo', false],225['f\\S\\S', false],226['foo', false],227228['Foo', true],229].forEach(([str, result]) => {230assert.strictEqual(strings.containsUppercaseCharacter(<string>str, true), result, `Wrong result for ${str}`);231});232});233234});235236237