Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/workbench/contrib/extensions/test/common/extensionQuery.test.ts
3296 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import assert from 'assert';
7
import { Query } from '../../common/extensionQuery.js';
8
import { ensureNoDisposablesAreLeakedInTestSuite } from '../../../../../base/test/common/utils.js';
9
10
suite('Extension query', () => {
11
ensureNoDisposablesAreLeakedInTestSuite();
12
13
test('parse', () => {
14
let query = Query.parse('');
15
assert.strictEqual(query.value, '');
16
assert.strictEqual(query.sortBy, '');
17
18
query = Query.parse('hello');
19
assert.strictEqual(query.value, 'hello');
20
assert.strictEqual(query.sortBy, '');
21
22
query = Query.parse(' hello world ');
23
assert.strictEqual(query.value, 'hello world');
24
assert.strictEqual(query.sortBy, '');
25
26
query = Query.parse('@sort');
27
assert.strictEqual(query.value, '@sort');
28
assert.strictEqual(query.sortBy, '');
29
30
query = Query.parse('@sort:');
31
assert.strictEqual(query.value, '@sort:');
32
assert.strictEqual(query.sortBy, '');
33
34
query = Query.parse(' @sort: ');
35
assert.strictEqual(query.value, '@sort:');
36
assert.strictEqual(query.sortBy, '');
37
38
query = Query.parse('@sort:installs');
39
assert.strictEqual(query.value, '');
40
assert.strictEqual(query.sortBy, 'installs');
41
42
query = Query.parse(' @sort:installs ');
43
assert.strictEqual(query.value, '');
44
assert.strictEqual(query.sortBy, 'installs');
45
46
query = Query.parse('@sort:installs-');
47
assert.strictEqual(query.value, '');
48
assert.strictEqual(query.sortBy, 'installs');
49
50
query = Query.parse('@sort:installs-foo');
51
assert.strictEqual(query.value, '');
52
assert.strictEqual(query.sortBy, 'installs');
53
54
query = Query.parse('@sort:installs');
55
assert.strictEqual(query.value, '');
56
assert.strictEqual(query.sortBy, 'installs');
57
58
query = Query.parse('@sort:installs');
59
assert.strictEqual(query.value, '');
60
assert.strictEqual(query.sortBy, 'installs');
61
62
query = Query.parse('vs @sort:installs');
63
assert.strictEqual(query.value, 'vs');
64
assert.strictEqual(query.sortBy, 'installs');
65
66
query = Query.parse('vs @sort:installs code');
67
assert.strictEqual(query.value, 'vs code');
68
assert.strictEqual(query.sortBy, 'installs');
69
70
query = Query.parse('@sort:installs @sort:ratings');
71
assert.strictEqual(query.value, '');
72
assert.strictEqual(query.sortBy, 'ratings');
73
});
74
75
test('toString', () => {
76
let query = new Query('hello', '');
77
assert.strictEqual(query.toString(), 'hello');
78
79
query = new Query('hello world', '');
80
assert.strictEqual(query.toString(), 'hello world');
81
82
query = new Query(' hello ', '');
83
assert.strictEqual(query.toString(), 'hello');
84
85
query = new Query('', 'installs');
86
assert.strictEqual(query.toString(), '@sort:installs');
87
88
query = new Query('', 'installs');
89
assert.strictEqual(query.toString(), '@sort:installs');
90
91
query = new Query('', 'installs');
92
assert.strictEqual(query.toString(), '@sort:installs');
93
94
query = new Query('hello', 'installs');
95
assert.strictEqual(query.toString(), 'hello @sort:installs');
96
97
query = new Query(' hello ', 'installs');
98
assert.strictEqual(query.toString(), 'hello @sort:installs');
99
});
100
101
test('isValid', () => {
102
let query = new Query('hello', '');
103
assert(query.isValid());
104
105
query = new Query('hello world', '');
106
assert(query.isValid());
107
108
query = new Query(' hello ', '');
109
assert(query.isValid());
110
111
query = new Query('', 'installs');
112
assert(query.isValid());
113
114
query = new Query('', 'installs');
115
assert(query.isValid());
116
117
query = new Query('', 'installs');
118
assert(query.isValid());
119
120
query = new Query('', 'installs');
121
assert(query.isValid());
122
123
query = new Query('hello', 'installs');
124
assert(query.isValid());
125
126
query = new Query(' hello ', 'installs');
127
assert(query.isValid());
128
});
129
130
test('equals', () => {
131
const query1 = new Query('hello', '');
132
let query2 = new Query('hello', '');
133
assert(query1.equals(query2));
134
135
query2 = new Query('hello world', '');
136
assert(!query1.equals(query2));
137
138
query2 = new Query('hello', 'installs');
139
assert(!query1.equals(query2));
140
141
query2 = new Query('hello', 'installs');
142
assert(!query1.equals(query2));
143
});
144
145
test('autocomplete', () => {
146
Query.suggestions('@sort:in', null).some(x => x === '@sort:installs ');
147
Query.suggestions('@sort:installs', null).every(x => x !== '@sort:rating ');
148
149
Query.suggestions('@category:blah', null).some(x => x === '@category:"extension packs" ');
150
Query.suggestions('@category:"extension packs"', null).every(x => x !== '@category:formatters ');
151
});
152
});
153
154