// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import { assert } from 'chai';
import * as UI from './legacy.js';
describe('SearchableView', () => {
    describe('SearchConfig', () => {
        const { SearchConfig } = UI.SearchableView;
        describe('constructor', () => {
            it('supports matching by case or whole word, and using regular expressions', () => {
                const config = new SearchConfig('foo', /* caseSensitive=*/ true, /* wholeWord=*/ true, /* isRegex=*/ false);
                assert.isTrue(config.caseSensitive);
                assert.isTrue(config.wholeWord);
                assert.isFalse(config.isRegex);
            });
        });
        describe('toSearchRegex', () => {
            it('supports case sensitive matches', () => {
                const config = new SearchConfig('foo', /* caseSensitive=*/ true, /* wholeWord=*/ false, /* isRegex=*/ false);
                const { regex } = config.toSearchRegex();
                assert.strictEqual(regex.flags, '');
                assert.strictEqual(regex.source, 'foo');
            });
            it('supports case insensitive matches', () => {
                const config = new SearchConfig('foo', /* caseSensitive=*/ false, /* wholeWord=*/ false, /* isRegex=*/ false);
                const { regex } = config.toSearchRegex();
                assert.strictEqual(regex.flags, 'i');
                assert.strictEqual(regex.source, 'foo');
            });
            it('supports whole word matches', () => {
                const config = new SearchConfig('foo', /* caseSensitive=*/ true, /* wholeWord=*/ true, /* isRegex=*/ false);
                const { regex } = config.toSearchRegex();
                assert.strictEqual(regex.source, '\\bfoo\\b');
            });
            it('supports whole word matches with regular expressions', () => {
                const config = new SearchConfig('ba[rz]', /* caseSensitive=*/ true, /* wholeWord=*/ true, /* isRegex=*/ true);
                const { regex } = config.toSearchRegex();
                assert.strictEqual(regex.source, '\\bba[rz]\\b');
            });
        });
    });
});
//# sourceMappingURL=SearchableView.test.js.map