Path: blob/main/src/vs/workbench/contrib/extensions/test/common/extensionQuery.test.ts
3296 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import assert from 'assert';6import { Query } from '../../common/extensionQuery.js';7import { ensureNoDisposablesAreLeakedInTestSuite } from '../../../../../base/test/common/utils.js';89suite('Extension query', () => {10ensureNoDisposablesAreLeakedInTestSuite();1112test('parse', () => {13let query = Query.parse('');14assert.strictEqual(query.value, '');15assert.strictEqual(query.sortBy, '');1617query = Query.parse('hello');18assert.strictEqual(query.value, 'hello');19assert.strictEqual(query.sortBy, '');2021query = Query.parse(' hello world ');22assert.strictEqual(query.value, 'hello world');23assert.strictEqual(query.sortBy, '');2425query = Query.parse('@sort');26assert.strictEqual(query.value, '@sort');27assert.strictEqual(query.sortBy, '');2829query = Query.parse('@sort:');30assert.strictEqual(query.value, '@sort:');31assert.strictEqual(query.sortBy, '');3233query = Query.parse(' @sort: ');34assert.strictEqual(query.value, '@sort:');35assert.strictEqual(query.sortBy, '');3637query = Query.parse('@sort:installs');38assert.strictEqual(query.value, '');39assert.strictEqual(query.sortBy, 'installs');4041query = Query.parse(' @sort:installs ');42assert.strictEqual(query.value, '');43assert.strictEqual(query.sortBy, 'installs');4445query = Query.parse('@sort:installs-');46assert.strictEqual(query.value, '');47assert.strictEqual(query.sortBy, 'installs');4849query = Query.parse('@sort:installs-foo');50assert.strictEqual(query.value, '');51assert.strictEqual(query.sortBy, 'installs');5253query = Query.parse('@sort:installs');54assert.strictEqual(query.value, '');55assert.strictEqual(query.sortBy, 'installs');5657query = Query.parse('@sort:installs');58assert.strictEqual(query.value, '');59assert.strictEqual(query.sortBy, 'installs');6061query = Query.parse('vs @sort:installs');62assert.strictEqual(query.value, 'vs');63assert.strictEqual(query.sortBy, 'installs');6465query = Query.parse('vs @sort:installs code');66assert.strictEqual(query.value, 'vs code');67assert.strictEqual(query.sortBy, 'installs');6869query = Query.parse('@sort:installs @sort:ratings');70assert.strictEqual(query.value, '');71assert.strictEqual(query.sortBy, 'ratings');72});7374test('toString', () => {75let query = new Query('hello', '');76assert.strictEqual(query.toString(), 'hello');7778query = new Query('hello world', '');79assert.strictEqual(query.toString(), 'hello world');8081query = new Query(' hello ', '');82assert.strictEqual(query.toString(), 'hello');8384query = new Query('', 'installs');85assert.strictEqual(query.toString(), '@sort:installs');8687query = new Query('', 'installs');88assert.strictEqual(query.toString(), '@sort:installs');8990query = new Query('', 'installs');91assert.strictEqual(query.toString(), '@sort:installs');9293query = new Query('hello', 'installs');94assert.strictEqual(query.toString(), 'hello @sort:installs');9596query = new Query(' hello ', 'installs');97assert.strictEqual(query.toString(), 'hello @sort:installs');98});99100test('isValid', () => {101let query = new Query('hello', '');102assert(query.isValid());103104query = new Query('hello world', '');105assert(query.isValid());106107query = new Query(' hello ', '');108assert(query.isValid());109110query = new Query('', 'installs');111assert(query.isValid());112113query = new Query('', 'installs');114assert(query.isValid());115116query = new Query('', 'installs');117assert(query.isValid());118119query = new Query('', 'installs');120assert(query.isValid());121122query = new Query('hello', 'installs');123assert(query.isValid());124125query = new Query(' hello ', 'installs');126assert(query.isValid());127});128129test('equals', () => {130const query1 = new Query('hello', '');131let query2 = new Query('hello', '');132assert(query1.equals(query2));133134query2 = new Query('hello world', '');135assert(!query1.equals(query2));136137query2 = new Query('hello', 'installs');138assert(!query1.equals(query2));139140query2 = new Query('hello', 'installs');141assert(!query1.equals(query2));142});143144test('autocomplete', () => {145Query.suggestions('@sort:in', null).some(x => x === '@sort:installs ');146Query.suggestions('@sort:installs', null).every(x => x !== '@sort:rating ');147148Query.suggestions('@category:blah', null).some(x => x === '@category:"extension packs" ');149Query.suggestions('@category:"extension packs"', null).every(x => x !== '@category:formatters ');150});151});152153154