Path: blob/main/extensions/copilot/src/extension/prompts/node/test/fixtures/strings.test-example.3.summarized.ts
13406 views
7:18: suite('Strings', () => {2115:3116: test('format2', () => {…});4126:5127: test('lcut', () => {…});6138:7139: test('escape', () => {…});8146:9147: test('ltrim', () => {10157: assert.strictEqual(strings.ltrim('', '/'), '');11158: });12159:13160: test('rtrim', () => {14161: assert.strictEqual(strings.rtrim('foo', 'o'), 'f');15162: assert.strictEqual(strings.rtrim('foo', 'f'), 'foo');16163: assert.strictEqual(strings.rtrim('http://www.test.de', '.de'), 'http://www.test');17164: assert.strictEqual(strings.rtrim('/foo/', '/'), '/foo');18165: assert.strictEqual(strings.rtrim('/foo//', '/'), '/foo');19166: assert.strictEqual(strings.rtrim('/', ''), '/');20167: assert.strictEqual(strings.rtrim('/', '/'), '');21168: assert.strictEqual(strings.rtrim('///', '/'), '');22169: assert.strictEqual(strings.rtrim('', ''), '');23170: assert.strictEqual(strings.rtrim('', '/'), '');24171: });25172:26173: test('trim', () => {27174: assert.strictEqual(strings.trim(' foo '), 'foo');28175: assert.strictEqual(strings.trim(' foo'), 'foo');29176: assert.strictEqual(strings.trim('bar '), 'bar');30177: assert.strictEqual(strings.trim(' '), '');31178: assert.strictEqual(strings.trim('foo bar', 'bar'), 'foo ');32179: });33180:34181: test('trimWhitespace', () => {35182: assert.strictEqual(' foo '.trim(), 'foo');36183: assert.strictEqual(' foo '.trim(), 'foo');37184: assert.strictEqual(' foo'.trim(), 'foo');38185: assert.strictEqual('bar '.trim(), 'bar');39186: assert.strictEqual(' '.trim(), '');40187: assert.strictEqual(' '.trim(), '');41188: });42189:43190: test('lastNonWhitespaceIndex', () => {44191: assert.strictEqual(strings.lastNonWhitespaceIndex('abc \t \t '), 2);45192: assert.strictEqual(strings.lastNonWhitespaceIndex('abc'), 2);46193: assert.strictEqual(strings.lastNonWhitespaceIndex('abc\t'), 2);47194: assert.strictEqual(strings.lastNonWhitespaceIndex('abc '), 2);48195: assert.strictEqual(strings.lastNonWhitespaceIndex('abc \t \t '), 2);49196: assert.strictEqual(strings.lastNonWhitespaceIndex('abc \t \t abc \t \t '), 11);50197: assert.strictEqual(strings.lastNonWhitespaceIndex('abc \t \t abc \t \t ', 8), 2);51198: assert.strictEqual(strings.lastNonWhitespaceIndex(' \t \t '), -1);52199: });53200:54201: test('containsRTL', () => {55202: assert.strictEqual(strings.containsRTL('a'), false);56203: assert.strictEqual(strings.containsRTL(''), false);57204: assert.strictEqual(strings.containsRTL(strings.UTF8_BOM_CHARACTER + 'a'), false);58205: assert.strictEqual(strings.containsRTL('hello world!'), false);59206: assert.strictEqual(strings.containsRTL('a📚📚b'), false);60207: assert.strictEqual(strings.containsRTL('هناك حقيقة مثبتة منذ زمن طويل'), true);61208: assert.strictEqual(strings.containsRTL('זוהי עובדה מבוססת שדעתו'), true);62209: });63210:64211: test('issue #115221: isEmojiImprecise misses ⭐', () => {65212: const codePoint = strings.getNextCodePoint('⭐', '⭐'.length, 0);66213: assert.strictEqual(strings.isEmojiImprecise(codePoint), true);67214: });68215:69216: test('isBasicASCII', () => {70217: function assertIsBasicASCII(str: string, expected: boolean): void {71218: assert.strictEqual(strings.isBasicASCII(str), expected, str + ` (${str.charCodeAt(0)})`);72219: }73220: assertIsBasicASCII('abcdefghijklmnopqrstuvwxyz', true);74221: assertIsBasicASCII('ABCDEFGHIJKLMNOPQRSTUVWXYZ', true);75222: assertIsBasicASCII('1234567890', true);76223: assertIsBasicASCII('`~!@#$%^&*()-_=+[{]}\\|;:\'",<.>/?', true);77224: assertIsBasicASCII(' ', true);78225: assertIsBasicASCII('\t', true);79226: assertIsBasicASCII('\n', true);80227: assertIsBasicASCII('\r', true);81228:82229: let ALL = '\r\t\n';83230: for (let i = 32; i < 127; i++) {84231: ALL += String.fromCharCode(i);85232: }86233: assertIsBasicASCII(ALL, true);87234:88235: assertIsBasicASCII(String.fromCharCode(31), false);89236: assertIsBasicASCII(String.fromCharCode(127), false);90237: assertIsBasicASCII('ü', false);91238: assertIsBasicASCII('a📚📚b', false);92239: });93240:94241: test('createRegExp', () => {95242: // Empty96243: assert.throws(() => strings.createRegExp('', false));97244:98245: // Escapes appropriately99246: assert.strictEqual(strings.createRegExp('abc', false).source, 'abc');100247: assert.strictEqual(strings.createRegExp('([^ ,.]*)', false).source, '\\(\\[\\^ ,\\.\\]\\*\\)');101248: assert.strictEqual(strings.createRegExp('([^ ,.]*)', true).source, '([^ ,.]*)');102249:103250: // Whole word104251: assert.strictEqual(strings.createRegExp('abc', false, { wholeWord: true }).source, '\\babc\\b');105252: assert.strictEqual(strings.createRegExp('abc', true, { wholeWord: true }).source, '\\babc\\b');106253: assert.strictEqual(strings.createRegExp(' abc', true, { wholeWord: true }).source, ' abc\\b');107254: assert.strictEqual(strings.createRegExp('abc ', true, { wholeWord: true }).source, '\\babc ');108255: assert.strictEqual(strings.createRegExp(' abc ', true, { wholeWord: true }).source, ' abc ');109256:110257: const regExpWithoutFlags = strings.createRegExp('abc', true);111258: assert(!regExpWithoutFlags.global);112259: assert(regExpWithoutFlags.ignoreCase);113260: assert(!regExpWithoutFlags.multiline);114261:115262: const regExpWithFlags = strings.createRegExp('abc', true, { global: true, matchCase: true, multiline: true });116263: assert(regExpWithFlags.global);117264: assert(!regExpWithFlags.ignoreCase);118265: assert(regExpWithFlags.multiline);119266: });120267:121268: test('regExpContainsBackreference', () => {122269: assert(strings.regExpContainsBackreference('foo \\5 bar'));123270: assert(strings.regExpContainsBackreference('\\2'));124271: assert(strings.regExpContainsBackreference('(\\d)(\\n)(\\1)'));125272: assert(strings.regExpContainsBackreference('(A).*?\\1'));126273: assert(strings.regExpContainsBackreference('\\\\\\1'));127274: assert(strings.regExpContainsBackreference('foo \\\\\\1'));128275:129276: assert(!strings.regExpContainsBackreference(''));130277: assert(!strings.regExpContainsBackreference('\\\\1'));131278: assert(!strings.regExpContainsBackreference('foo \\\\1'));132279: assert(!strings.regExpContainsBackreference('(A).*?\\\\1'));133280: assert(!strings.regExpContainsBackreference('foo \\d1 bar'));134281: assert(!strings.regExpContainsBackreference('123'));135282: });136283:137284: test('getLeadingWhitespace', () => {138285: assert.strictEqual(strings.getLeadingWhitespace(' foo'), ' ');139286: assert.strictEqual(strings.getLeadingWhitespace(' foo', 2), '');140287: assert.strictEqual(strings.getLeadingWhitespace(' foo', 1, 1), '');141288: assert.strictEqual(strings.getLeadingWhitespace(' foo', 0, 1), ' ');142289: assert.strictEqual(strings.getLeadingWhitespace(' '), ' ');143290: assert.strictEqual(strings.getLeadingWhitespace(' ', 1), ' ');144291: assert.strictEqual(strings.getLeadingWhitespace(' ', 0, 1), ' ');145292: assert.strictEqual(strings.getLeadingWhitespace('\t\tfunction foo(){', 0, 1), '\t');146293: assert.strictEqual(strings.getLeadingWhitespace('\t\tfunction foo(){', 0, 2), '\t\t');147294: });148295:149296: test('fuzzyContains', () => {150297: assert.ok(!strings.fuzzyContains((undefined)!, null!));151298: assert.ok(strings.fuzzyContains('hello world', 'h'));152299: assert.ok(!strings.fuzzyContains('hello world', 'q'));153300: assert.ok(strings.fuzzyContains('hello world', 'hw'));154301: assert.ok(strings.fuzzyContains('hello world', 'horl'));155302: assert.ok(strings.fuzzyContains('hello world', 'd'));156303: assert.ok(!strings.fuzzyContains('hello world', 'wh'));157304: assert.ok(!strings.fuzzyContains('d', 'dd'));158305: });159306:160307: test('startsWithUTF8BOM', () => {161308: assert(strings.startsWithUTF8BOM(strings.UTF8_BOM_CHARACTER));162309: assert(strings.startsWithUTF8BOM(strings.UTF8_BOM_CHARACTER + 'a'));163310: assert(strings.startsWithUTF8BOM(strings.UTF8_BOM_CHARACTER + 'aaaaaaaaaa'));164311: assert(!strings.startsWithUTF8BOM(' ' + strings.UTF8_BOM_CHARACTER));165312: assert(!strings.startsWithUTF8BOM('foo'));166313: assert(!strings.startsWithUTF8BOM(''));167314: });168315:169316: test('stripUTF8BOM', () => {170317: assert.strictEqual(strings.stripUTF8BOM(strings.UTF8_BOM_CHARACTER), '');171318: assert.strictEqual(strings.stripUTF8BOM(strings.UTF8_BOM_CHARACTER + 'foobar'), 'foobar');172319: assert.strictEqual(strings.stripUTF8BOM('foobar' + strings.UTF8_BOM_CHARACTER), 'foobar' + strings.UTF8_BOM_CHARACTER);173320: assert.strictEqual(strings.stripUTF8BOM('abc'), 'abc');174321: assert.strictEqual(strings.stripUTF8BOM(''), '');175322: });176323:177324: test('containsUppercaseCharacter', () => {178325: [179326: [null, false],180327: ['', false],181328: ['foo', false],182329: ['föö', false],183330: ['ناك', false],184331: ['מבוססת', false],185332: ['😀', false],186333: ['(#@()*&%()@*#&09827340982374}{:">?></\'\\~`', false],187334:188335: ['Foo', true],189336: ['FOO', true],190337: ['FöÖ', true],191338: ['FöÖ', true],192339: ['\\Foo', true],193340: ].forEach(([str, result]) => {194341: assert.strictEqual(strings.containsUppercaseCharacter(<string>str), result, `Wrong result for ${str}`);195342: });196343: });197344:198345:199346:200347: test('containsUppercaseCharacter (ignoreEscapedChars)', () => {201348: [202349: ['\\Woo', false],203350: ['f\\S\\S', false],204351: ['foo', false],205352:206353: ['Foo', true],207354: ].forEach(([str, result]) => {208355: assert.strictEqual(strings.containsUppercaseCharacter(<string>str, true), result, `Wrong result for ${str}`);209356: });210357: });211358:212359: });213214215