Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/extensions/copilot/src/extension/prompt/node/test/codeGuesser.spec.ts
13405 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 { suite, test } from 'vitest';
8
import { looksLikeCode } from '../../common/codeGuesser';
9
10
suite('codeGuesser', () => {
11
12
test('looksLikeCode - detects JavaScript configuration as code', () => {
13
const jsConfigSnippet = `'prefer-const': 'off',`;
14
assert.strictEqual(looksLikeCode(jsConfigSnippet), true);
15
});
16
17
test('looksLikeCode - detects code-like text', () => {
18
const codeSnippet = 'function test() { return true; }';
19
assert.strictEqual(looksLikeCode(codeSnippet), true);
20
});
21
22
test('looksLikeCode - detects non-code text', () => {
23
const nonCodeSnippet = 'This is a regular sentence.';
24
assert.strictEqual(looksLikeCode(nonCodeSnippet), false);
25
});
26
27
test('looksLikeCode - detects empty string', () => {
28
const emptyString = '';
29
assert.strictEqual(looksLikeCode(emptyString), false);
30
});
31
32
test('looksLikeCode - detects HTML as code', () => {
33
const htmlSnippet = '<div>Hello World</div>';
34
assert.strictEqual(looksLikeCode(htmlSnippet), true);
35
});
36
37
test('looksLikeCode - detects JSON as code', () => {
38
const jsonSnippet = '{"key": "value"}';
39
assert.strictEqual(looksLikeCode(jsonSnippet), true);
40
});
41
42
test('looksLikeCode - detects CSS as code', () => {
43
const cssSnippet = 'body { background-color: #fff; }';
44
assert.strictEqual(looksLikeCode(cssSnippet), true);
45
});
46
47
test('looksLikeCode - detects SQL as code', () => {
48
const sqlSnippet = 'SELECT * FROM users WHERE id = 1;';
49
assert.strictEqual(looksLikeCode(sqlSnippet), true);
50
});
51
52
test('looksLikeCode - detects Python as code', () => {
53
const pythonSnippet = 'def test(): return True';
54
assert.strictEqual(looksLikeCode(pythonSnippet), true);
55
});
56
57
test('looksLikeCode - detects Java as code', () => {
58
const javaSnippet = 'public class Test { public static void main(String[] args) { } }';
59
assert.strictEqual(looksLikeCode(javaSnippet), true);
60
});
61
62
test('looksLikeCode - detects C++ as code', () => {
63
const cppSnippet = 'int main() { return 0; }';
64
assert.strictEqual(looksLikeCode(cppSnippet), true);
65
});
66
67
test('looksLikeCode - detects Ruby as code', () => {
68
const rubySnippet = 'def test; true; end';
69
assert.strictEqual(looksLikeCode(rubySnippet), true);
70
});
71
72
test('looksLikeCode - detects PHP as code', () => {
73
const phpSnippet = '<?php echo "Hello World"; ?>';
74
assert.strictEqual(looksLikeCode(phpSnippet), true);
75
});
76
77
test('looksLikeCode - detects XML as code', () => {
78
const xmlSnippet = '<note><to>Tove</to></note>';
79
assert.strictEqual(looksLikeCode(xmlSnippet), true);
80
});
81
82
test.skip('looksLikeCode - detects YAML as code', () => {
83
const yamlSnippet = 'key: value';
84
assert.strictEqual(looksLikeCode(yamlSnippet), true);
85
});
86
87
test.skip('looksLikeCode - detects Markdown as non-code', () => {
88
const markdownSnippet = '# This is a heading';
89
assert.strictEqual(looksLikeCode(markdownSnippet), false);
90
});
91
92
test('looksLikeCode - detects plain text as non-code', () => {
93
const plainTextSnippet = 'Just some plain text.';
94
assert.strictEqual(looksLikeCode(plainTextSnippet), false);
95
});
96
97
test.skip('looksLikeCode - detects shell script as code', () => {
98
const shellSnippet = 'echo "Hello World"';
99
assert.strictEqual(looksLikeCode(shellSnippet), true);
100
});
101
102
test('looksLikeCode - detects TypeScript as code', () => {
103
const tsSnippet = 'const test: boolean = true;';
104
assert.strictEqual(looksLikeCode(tsSnippet), true);
105
});
106
107
test('looksLikeCode - detects Swift as code', () => {
108
const swiftSnippet = 'func test() -> Bool { return true }';
109
assert.strictEqual(looksLikeCode(swiftSnippet), true);
110
});
111
112
test('looksLikeCode - detects Kotlin as code', () => {
113
const kotlinSnippet = 'fun test(): Boolean { return true }';
114
assert.strictEqual(looksLikeCode(kotlinSnippet), true);
115
});
116
117
test('looksLikeCode - detects Go as code', () => {
118
const goSnippet = 'func main() { fmt.Println("Hello World") }';
119
assert.strictEqual(looksLikeCode(goSnippet), true);
120
});
121
122
test('looksLikeCode - detects Rust as code', () => {
123
const rustSnippet = 'fn main() { println!("Hello World"); }';
124
assert.strictEqual(looksLikeCode(rustSnippet), true);
125
});
126
127
test('looksLikeCode - detects Perl as code', () => {
128
const perlSnippet = 'print "Hello World";';
129
assert.strictEqual(looksLikeCode(perlSnippet), true);
130
});
131
132
test('looksLikeCode - detects Lua as code', () => {
133
const luaSnippet = 'print("Hello World")';
134
assert.strictEqual(looksLikeCode(luaSnippet), true);
135
});
136
137
test('looksLikeCode - detects R as code', () => {
138
const rSnippet = 'print("Hello World")';
139
assert.strictEqual(looksLikeCode(rSnippet), true);
140
});
141
142
test('looksLikeCode - detects multiline JavaScript as code', () => {
143
const jsSnippet = `
144
function add(a, b) {
145
return a + b;
146
}
147
console.log(add(2, 3));
148
`;
149
assert.strictEqual(looksLikeCode(jsSnippet), true);
150
});
151
152
test('looksLikeCode - detects multiline Python as code', () => {
153
const pythonSnippet = `
154
def add(a, b):
155
return a + b
156
157
print(add(2, 3))
158
`;
159
assert.strictEqual(looksLikeCode(pythonSnippet), true);
160
});
161
162
test('looksLikeCode - detects multiline HTML as code', () => {
163
const htmlSnippet = `
164
<!DOCTYPE html>
165
<html>
166
<head>
167
<title>Test</title>
168
</head>
169
<body>
170
<p>Hello World</p>
171
</body>
172
</html>
173
`;
174
assert.strictEqual(looksLikeCode(htmlSnippet), true);
175
});
176
177
test('looksLikeCode - detects multiline CSS as code', () => {
178
const cssSnippet = `
179
body {
180
background-color: #fff;
181
color: #333;
182
}
183
h1 {
184
font-size: 2em;
185
}
186
`;
187
assert.strictEqual(looksLikeCode(cssSnippet), true);
188
});
189
190
test('looksLikeCode - detects multiline SQL as code', () => {
191
const sqlSnippet = `
192
SELECT id, name
193
FROM users
194
WHERE active = 1
195
ORDER BY name;
196
`;
197
assert.strictEqual(looksLikeCode(sqlSnippet), true);
198
});
199
200
test('looksLikeCode - detects natural language response as non-code', () => {
201
const naturalLanguageSnippet = 'Sure, I can help you with that. What do you need assistance with?';
202
assert.strictEqual(looksLikeCode(naturalLanguageSnippet), false);
203
});
204
205
test('looksLikeCode - detects natural language explanation as non-code', () => {
206
const naturalLanguageSnippet = 'To create a new React component, you can use the following code snippet:';
207
assert.strictEqual(looksLikeCode(naturalLanguageSnippet), false);
208
});
209
210
test('looksLikeCode - detects natural language instruction as non-code', () => {
211
const naturalLanguageSnippet = 'First, install the necessary dependencies using npm or yarn.';
212
assert.strictEqual(looksLikeCode(naturalLanguageSnippet), false);
213
});
214
215
test('looksLikeCode - detects natural language question as non-code', () => {
216
const naturalLanguageSnippet = 'Have you tried restarting your development server?';
217
assert.strictEqual(looksLikeCode(naturalLanguageSnippet), false);
218
});
219
220
test('looksLikeCode - detects natural language suggestion as non-code', () => {
221
const naturalLanguageSnippet = 'I suggest checking the console for any error messages.';
222
assert.strictEqual(looksLikeCode(naturalLanguageSnippet), false);
223
});
224
225
test('looksLikeCode - detects natural language response in Spanish as non-code', () => {
226
const spanishSnippet = 'Claro, puedo ayudarte con eso. ¿Qué necesitas?';
227
assert.strictEqual(looksLikeCode(spanishSnippet), false);
228
});
229
230
test('looksLikeCode - detects natural language response in French as non-code', () => {
231
const frenchSnippet = 'Bien sûr, je peux vous aider avec cela. Que voulez-vous savoir?';
232
assert.strictEqual(looksLikeCode(frenchSnippet), false);
233
});
234
235
test('looksLikeCode - detects natural language response in German as non-code', () => {
236
const germanSnippet = 'Natürlich kann ich Ihnen dabei helfen. Was brauchen Sie?';
237
assert.strictEqual(looksLikeCode(germanSnippet), false);
238
});
239
240
test('looksLikeCode - detects natural language response in Chinese as non-code', () => {
241
const chineseSnippet = '当然,我可以帮你。你需要什么帮助?';
242
assert.strictEqual(looksLikeCode(chineseSnippet), false);
243
});
244
245
test('looksLikeCode - detects natural language response in Japanese as non-code', () => {
246
const japaneseSnippet = 'もちろん、お手伝いできます。何が必要ですか?';
247
assert.strictEqual(looksLikeCode(japaneseSnippet), false);
248
});
249
250
test('looksLikeCode - detects natural language response in Russian as non-code', () => {
251
const russianSnippet = 'Конечно, я могу вам помочь. Что вам нужно?';
252
assert.strictEqual(looksLikeCode(russianSnippet), false);
253
});
254
255
});
256
257