From 95a9531ec17aa430652281e643cf603b6455c5b4 Mon Sep 17 00:00:00 2001 From: Anthony Kim Date: Wed, 20 Aug 2025 22:49:03 -0700 Subject: [PATCH] Try to add tests --- addons/addon-search/test/SearchAddon.test.ts | 51 ++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/addons/addon-search/test/SearchAddon.test.ts b/addons/addon-search/test/SearchAddon.test.ts index 0045cf1c..232686b4 100644 --- a/addons/addon-search/test/SearchAddon.test.ts +++ b/addons/addon-search/test/SearchAddon.test.ts @@ -480,6 +480,57 @@ test.describe('Search Tests', () => { ]); }); }); + + test.describe('Wrapped line search functionality', () => { + test('should correctly count matches across multiple wrapped lines', async () => { + await ctx.page.evaluate(` + window.calls = []; + window.search.onDidChangeResults(e => window.calls.push(e)); + `); + + const content = 'a'.repeat(300); + await ctx.proxy.write(content); + strictEqual(await ctx.page.evaluate(`window.search.findNext('${content}', { decorations: { activeMatchColorOverviewRuler: '#ff0000', matchOverviewRuler: '#ffff00' } })`), true); + deepStrictEqual(await ctx.page.evaluate('window.calls'), [ + { resultCount: 1, resultIndex: 0 } + ]); + }); + + test('should handle reverse search across wrapped lines', async () => { + await ctx.page.evaluate(` + window.calls = []; + window.search.onDidChangeResults(e => window.calls.push(e)); + `); + + const content = 'x'.repeat(300); + await ctx.proxy.write(content); + strictEqual(await ctx.page.evaluate(`window.search.findPrevious('${content}', { decorations: { activeMatchColorOverviewRuler: '#ff0000', matchOverviewRuler: '#ffff00' } })`), true); + deepStrictEqual(await ctx.page.evaluate('window.calls'), [ + { resultCount: 1, resultIndex: 0 } + ]); + }); + + test('should update counts when content changes across wrapped lines', async () => { + await ctx.page.evaluate(` + window.calls = []; + window.search.onDidChangeResults(e => window.calls.push(e)); + `); + + const content = 'z'.repeat(300); + await ctx.proxy.write(content); + strictEqual(await ctx.page.evaluate(`window.search.findNext('${content}', { decorations: { activeMatchColorOverviewRuler: '#ff0000', matchOverviewRuler: '#ffff00' } })`), true); + deepStrictEqual(await ctx.page.evaluate('window.calls'), [ + { resultCount: 1, resultIndex: 0 } + ]); + + await ctx.proxy.write('\\n\\r' + content); + await timeout(300); + deepStrictEqual(await ctx.page.evaluate('window.calls'), [ + { resultCount: 1, resultIndex: 0 }, + { resultCount: 2, resultIndex: 0 } + ]); + }); + }); }); function makeData(length: number): string {