atlas-pipeline-mcp 1.0.19 โ 1.0.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/mcp.js +191 -0
- package/dist/mcp.js.map +1 -1
- package/dist/tools/context.d.ts +33 -7
- package/dist/tools/context.d.ts.map +1 -1
- package/dist/tools/context.js +167 -82
- package/dist/tools/context.js.map +1 -1
- package/dist/tools/dashboard.d.ts +107 -0
- package/dist/tools/dashboard.d.ts.map +1 -0
- package/dist/tools/dashboard.js +544 -0
- package/dist/tools/dashboard.js.map +1 -0
- package/dist/tools/dependencies.d.ts +105 -0
- package/dist/tools/dependencies.d.ts.map +1 -0
- package/dist/tools/dependencies.js +410 -0
- package/dist/tools/dependencies.js.map +1 -0
- package/dist/tools/git.d.ts +27 -4
- package/dist/tools/git.d.ts.map +1 -1
- package/dist/tools/git.js +156 -59
- package/dist/tools/git.js.map +1 -1
- package/dist/tools/profiler.d.ts +83 -0
- package/dist/tools/profiler.d.ts.map +1 -0
- package/dist/tools/profiler.js +385 -0
- package/dist/tools/profiler.js.map +1 -0
- package/dist/tools/refactor.d.ts +63 -0
- package/dist/tools/refactor.d.ts.map +1 -0
- package/dist/tools/refactor.js +308 -0
- package/dist/tools/refactor.js.map +1 -0
- package/dist/tools/resource-manager.d.ts +167 -0
- package/dist/tools/resource-manager.d.ts.map +1 -0
- package/dist/tools/resource-manager.js +352 -0
- package/dist/tools/resource-manager.js.map +1 -0
- package/dist/tools/review.d.ts +98 -0
- package/dist/tools/review.d.ts.map +1 -0
- package/dist/tools/review.js +428 -0
- package/dist/tools/review.js.map +1 -0
- package/dist/tools/test-utils.d.ts +170 -0
- package/dist/tools/test-utils.d.ts.map +1 -0
- package/dist/tools/test-utils.js +490 -0
- package/dist/tools/test-utils.js.map +1 -0
- package/dist/tools/validation.d.ts +237 -0
- package/dist/tools/validation.d.ts.map +1 -0
- package/dist/tools/validation.js +323 -0
- package/dist/tools/validation.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,490 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Atlas Server - Testing Utilities and Fixtures
|
|
3
|
+
*
|
|
4
|
+
* Comprehensive testing infrastructure for all tools:
|
|
5
|
+
* - Mock data generators
|
|
6
|
+
* - Test fixtures and helpers
|
|
7
|
+
* - Performance benchmarking
|
|
8
|
+
* - Integration test utilities
|
|
9
|
+
* - Assertion helpers
|
|
10
|
+
*
|
|
11
|
+
* @module test-utils
|
|
12
|
+
* @version 1.0.0
|
|
13
|
+
*/
|
|
14
|
+
// ============================================================================
|
|
15
|
+
// Mock Data Generators
|
|
16
|
+
// ============================================================================
|
|
17
|
+
/**
|
|
18
|
+
* Generate mock intent analysis for testing
|
|
19
|
+
*/
|
|
20
|
+
export function mockIntentAnalysis(overrides) {
|
|
21
|
+
return {
|
|
22
|
+
primaryIntent: 'code_generation',
|
|
23
|
+
confidence: 0.85,
|
|
24
|
+
entities: [
|
|
25
|
+
{ type: 'language', value: 'TypeScript', position: { start: 10, end: 20 } },
|
|
26
|
+
{ type: 'framework', value: 'React', position: { start: 25, end: 30 } },
|
|
27
|
+
],
|
|
28
|
+
keywords: ['create', 'component', 'typescript', 'react'],
|
|
29
|
+
requiresClarification: false,
|
|
30
|
+
...overrides,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Generate mock project info for testing
|
|
35
|
+
*/
|
|
36
|
+
export function mockProjectInfo(overrides) {
|
|
37
|
+
return {
|
|
38
|
+
rootPath: '/mock/project',
|
|
39
|
+
languages: ['TypeScript', 'JavaScript'],
|
|
40
|
+
frameworks: ['React', 'Next.js'],
|
|
41
|
+
packageManager: 'npm',
|
|
42
|
+
configFiles: ['package.json', 'tsconfig.json'],
|
|
43
|
+
...overrides,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Generate mock git context for testing
|
|
48
|
+
*/
|
|
49
|
+
export function mockGitContext(overrides) {
|
|
50
|
+
return {
|
|
51
|
+
currentBranch: 'main',
|
|
52
|
+
recentCommits: [
|
|
53
|
+
{
|
|
54
|
+
hash: 'abc123',
|
|
55
|
+
message: 'feat: add new feature',
|
|
56
|
+
author: 'Test User',
|
|
57
|
+
date: '2024-01-15T10:30:00Z',
|
|
58
|
+
filesChanged: 3,
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
hash: 'def456',
|
|
62
|
+
message: 'fix: resolve bug',
|
|
63
|
+
author: 'Test User',
|
|
64
|
+
date: '2024-01-14T15:45:00Z',
|
|
65
|
+
filesChanged: 1,
|
|
66
|
+
},
|
|
67
|
+
],
|
|
68
|
+
uncommittedChanges: [],
|
|
69
|
+
remoteUrl: 'https://github.com/user/repo.git',
|
|
70
|
+
isDirty: false,
|
|
71
|
+
...overrides,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Generate mock code snippet for testing
|
|
76
|
+
*/
|
|
77
|
+
export function mockCodeSnippet(overrides) {
|
|
78
|
+
return {
|
|
79
|
+
filePath: '/mock/file.ts',
|
|
80
|
+
content: `function example() {\n return 'mock';\n}`,
|
|
81
|
+
language: 'TypeScript',
|
|
82
|
+
lineRange: { start: 1, end: 3 },
|
|
83
|
+
relevance: 0.8,
|
|
84
|
+
...overrides,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Generate mock pipeline context for testing
|
|
89
|
+
*/
|
|
90
|
+
export function mockPipelineContext(overrides) {
|
|
91
|
+
return {
|
|
92
|
+
intent: mockIntentAnalysis(),
|
|
93
|
+
codeSnippets: [mockCodeSnippet()],
|
|
94
|
+
projectInfo: mockProjectInfo(),
|
|
95
|
+
gitContext: mockGitContext(),
|
|
96
|
+
...overrides,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Generate mock decomposition result for testing
|
|
101
|
+
*/
|
|
102
|
+
export function mockDecompositionResult(overrides) {
|
|
103
|
+
return {
|
|
104
|
+
summary: 'Create a React component with TypeScript',
|
|
105
|
+
tasks: [
|
|
106
|
+
{
|
|
107
|
+
id: '1',
|
|
108
|
+
description: 'Define component interface',
|
|
109
|
+
type: 'design',
|
|
110
|
+
priority: 1,
|
|
111
|
+
dependencies: [],
|
|
112
|
+
complexity: 'low',
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
id: '2',
|
|
116
|
+
description: 'Implement component',
|
|
117
|
+
type: 'implementation',
|
|
118
|
+
priority: 2,
|
|
119
|
+
dependencies: ['1'],
|
|
120
|
+
complexity: 'medium',
|
|
121
|
+
},
|
|
122
|
+
],
|
|
123
|
+
executionOrder: ['1', '2'],
|
|
124
|
+
overallComplexity: 'medium',
|
|
125
|
+
...overrides,
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Generate mock solution variant for testing
|
|
130
|
+
*/
|
|
131
|
+
export function mockSolutionVariant(overrides) {
|
|
132
|
+
return {
|
|
133
|
+
id: 'mock-variant-1',
|
|
134
|
+
label: 'A',
|
|
135
|
+
content: `const Component = () => {\n return <div>Mock</div>;\n};`,
|
|
136
|
+
approach: 'Functional component with hooks',
|
|
137
|
+
tradeoffs: {
|
|
138
|
+
pros: ['Simple', 'Modern'],
|
|
139
|
+
cons: ['Limited flexibility'],
|
|
140
|
+
},
|
|
141
|
+
useCase: 'Simple presentational components',
|
|
142
|
+
...overrides,
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Generate mock critique for testing
|
|
147
|
+
*/
|
|
148
|
+
export function mockCritique(overrides) {
|
|
149
|
+
return {
|
|
150
|
+
variantId: 'mock-variant-1',
|
|
151
|
+
qualityScore: 85,
|
|
152
|
+
assessment: {
|
|
153
|
+
correctness: 90,
|
|
154
|
+
performance: 85,
|
|
155
|
+
maintainability: 80,
|
|
156
|
+
security: 85,
|
|
157
|
+
bestPractices: 85,
|
|
158
|
+
},
|
|
159
|
+
issues: [
|
|
160
|
+
{
|
|
161
|
+
severity: 'minor',
|
|
162
|
+
category: 'maintainability',
|
|
163
|
+
description: 'Consider adding PropTypes or TypeScript types',
|
|
164
|
+
},
|
|
165
|
+
],
|
|
166
|
+
suggestions: ['Add error boundaries', 'Implement loading states'],
|
|
167
|
+
isViable: true,
|
|
168
|
+
...overrides,
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
// ============================================================================
|
|
172
|
+
// Test Helpers
|
|
173
|
+
// ============================================================================
|
|
174
|
+
/**
|
|
175
|
+
* Measure async function execution time
|
|
176
|
+
*/
|
|
177
|
+
export async function measureTime(fn) {
|
|
178
|
+
const start = performance.now();
|
|
179
|
+
const result = await fn();
|
|
180
|
+
const durationMs = Math.round(performance.now() - start);
|
|
181
|
+
return { result, durationMs };
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Assert that a function throws with a specific message
|
|
185
|
+
*/
|
|
186
|
+
export async function assertThrows(fn, expectedMessage) {
|
|
187
|
+
try {
|
|
188
|
+
await fn();
|
|
189
|
+
throw new Error('Expected function to throw, but it did not');
|
|
190
|
+
}
|
|
191
|
+
catch (error) {
|
|
192
|
+
if (error instanceof Error) {
|
|
193
|
+
if (expectedMessage) {
|
|
194
|
+
const matches = typeof expectedMessage === 'string'
|
|
195
|
+
? error.message.includes(expectedMessage)
|
|
196
|
+
: expectedMessage.test(error.message);
|
|
197
|
+
if (!matches) {
|
|
198
|
+
throw new Error(`Expected error message "${error.message}" to match "${expectedMessage}"`);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
return error;
|
|
202
|
+
}
|
|
203
|
+
throw error;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Wait for a condition to be true
|
|
208
|
+
*/
|
|
209
|
+
export async function waitFor(condition, options = {}) {
|
|
210
|
+
const { timeout = 5000, interval = 100 } = options;
|
|
211
|
+
const start = Date.now();
|
|
212
|
+
while (Date.now() - start < timeout) {
|
|
213
|
+
if (await condition()) {
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
await new Promise((resolve) => setTimeout(resolve, interval));
|
|
217
|
+
}
|
|
218
|
+
throw new Error(`Condition not met within ${timeout}ms`);
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Create a spy function that tracks calls
|
|
222
|
+
*/
|
|
223
|
+
export function createSpy() {
|
|
224
|
+
const calls = [];
|
|
225
|
+
const spy = ((...args) => {
|
|
226
|
+
const call = { args };
|
|
227
|
+
calls.push(call);
|
|
228
|
+
return undefined;
|
|
229
|
+
});
|
|
230
|
+
return {
|
|
231
|
+
spy,
|
|
232
|
+
calls,
|
|
233
|
+
reset: () => {
|
|
234
|
+
calls.length = 0;
|
|
235
|
+
},
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Benchmark a function performance
|
|
240
|
+
*/
|
|
241
|
+
export async function benchmark(name, fn, iterations = 100) {
|
|
242
|
+
const times = [];
|
|
243
|
+
// Warmup
|
|
244
|
+
for (let i = 0; i < Math.min(10, iterations); i++) {
|
|
245
|
+
await fn();
|
|
246
|
+
}
|
|
247
|
+
// Actual benchmark
|
|
248
|
+
for (let i = 0; i < iterations; i++) {
|
|
249
|
+
const start = performance.now();
|
|
250
|
+
await fn();
|
|
251
|
+
times.push(performance.now() - start);
|
|
252
|
+
}
|
|
253
|
+
const totalMs = times.reduce((a, b) => a + b, 0);
|
|
254
|
+
const avgMs = totalMs / iterations;
|
|
255
|
+
const minMs = Math.min(...times);
|
|
256
|
+
const maxMs = Math.max(...times);
|
|
257
|
+
const opsPerSecond = 1000 / avgMs;
|
|
258
|
+
return {
|
|
259
|
+
name,
|
|
260
|
+
iterations,
|
|
261
|
+
totalMs,
|
|
262
|
+
avgMs,
|
|
263
|
+
minMs,
|
|
264
|
+
maxMs,
|
|
265
|
+
opsPerSecond,
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Compare multiple function implementations
|
|
270
|
+
*/
|
|
271
|
+
export async function benchmarkCompare(tests, iterations = 100) {
|
|
272
|
+
const results = [];
|
|
273
|
+
for (const test of tests) {
|
|
274
|
+
const result = await benchmark(test.name, test.fn, iterations);
|
|
275
|
+
results.push(result);
|
|
276
|
+
}
|
|
277
|
+
// Sort by fastest first
|
|
278
|
+
results.sort((a, b) => a.avgMs - b.avgMs);
|
|
279
|
+
return results;
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Print benchmark results to console
|
|
283
|
+
*/
|
|
284
|
+
export function printBenchmarkResults(results) {
|
|
285
|
+
console.log('\n๐ Benchmark Results:\n');
|
|
286
|
+
console.log('โ Name โ Avg (ms) โ Min (ms) โ Max (ms) โ Ops/sec โ');
|
|
287
|
+
console.log('โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโค');
|
|
288
|
+
for (const result of results) {
|
|
289
|
+
const name = result.name.padEnd(30);
|
|
290
|
+
const avg = result.avgMs.toFixed(2).padStart(8);
|
|
291
|
+
const min = result.minMs.toFixed(2).padStart(8);
|
|
292
|
+
const max = result.maxMs.toFixed(2).padStart(8);
|
|
293
|
+
const ops = Math.round(result.opsPerSecond).toString().padStart(7);
|
|
294
|
+
console.log(`โ ${name} โ ${avg} โ ${min} โ ${max} โ ${ops} โ`);
|
|
295
|
+
}
|
|
296
|
+
console.log('โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโดโโโโโโโโโโโดโโโโโโโโโโโดโโโโโโโโโโ\n');
|
|
297
|
+
// Show relative performance
|
|
298
|
+
if (results.length > 1) {
|
|
299
|
+
const fastest = results[0];
|
|
300
|
+
console.log('๐ Relative Performance:\n');
|
|
301
|
+
for (let i = 1; i < results.length; i++) {
|
|
302
|
+
const result = results[i];
|
|
303
|
+
const factor = (result.avgMs / fastest.avgMs).toFixed(2);
|
|
304
|
+
console.log(` ${result.name}: ${factor}x slower than ${fastest.name}`);
|
|
305
|
+
}
|
|
306
|
+
console.log();
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
// ============================================================================
|
|
310
|
+
// Integration Test Helpers
|
|
311
|
+
// ============================================================================
|
|
312
|
+
/**
|
|
313
|
+
* Create a temporary directory for testing
|
|
314
|
+
*/
|
|
315
|
+
export async function createTempDir() {
|
|
316
|
+
const { mkdtemp } = await import('node:fs/promises');
|
|
317
|
+
const { tmpdir } = await import('node:os');
|
|
318
|
+
const { join } = await import('node:path');
|
|
319
|
+
return await mkdtemp(join(tmpdir(), 'atlas-test-'));
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* Cleanup a temporary directory
|
|
323
|
+
*/
|
|
324
|
+
export async function cleanupTempDir(dir) {
|
|
325
|
+
const { rm } = await import('node:fs/promises');
|
|
326
|
+
await rm(dir, { recursive: true, force: true });
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Write test file to a directory
|
|
330
|
+
*/
|
|
331
|
+
export async function writeTestFile(dir, filename, content) {
|
|
332
|
+
const { writeFile } = await import('node:fs/promises');
|
|
333
|
+
const { join } = await import('node:path');
|
|
334
|
+
const filePath = join(dir, filename);
|
|
335
|
+
await writeFile(filePath, content, 'utf-8');
|
|
336
|
+
return filePath;
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Execute test with automatic cleanup
|
|
340
|
+
*/
|
|
341
|
+
export async function withTestDir(fn) {
|
|
342
|
+
const dir = await createTempDir();
|
|
343
|
+
try {
|
|
344
|
+
return await fn(dir);
|
|
345
|
+
}
|
|
346
|
+
finally {
|
|
347
|
+
await cleanupTempDir(dir);
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
// ============================================================================
|
|
351
|
+
// Assertion Helpers
|
|
352
|
+
// ============================================================================
|
|
353
|
+
/**
|
|
354
|
+
* Assert that two values are deeply equal
|
|
355
|
+
*/
|
|
356
|
+
export function assertEqual(actual, expected, message) {
|
|
357
|
+
const actualStr = JSON.stringify(actual);
|
|
358
|
+
const expectedStr = JSON.stringify(expected);
|
|
359
|
+
if (actualStr !== expectedStr) {
|
|
360
|
+
throw new Error(message ||
|
|
361
|
+
`Assertion failed:\n Expected: ${expectedStr}\n Actual: ${actualStr}`);
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
/**
|
|
365
|
+
* Assert that a value is truthy
|
|
366
|
+
*/
|
|
367
|
+
export function assertTrue(value, message) {
|
|
368
|
+
if (!value) {
|
|
369
|
+
throw new Error(message || `Assertion failed: Expected truthy value, got ${value}`);
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
/**
|
|
373
|
+
* Assert that a value is falsy
|
|
374
|
+
*/
|
|
375
|
+
export function assertFalse(value, message) {
|
|
376
|
+
if (value) {
|
|
377
|
+
throw new Error(message || `Assertion failed: Expected falsy value, got ${value}`);
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
/**
|
|
381
|
+
* Assert that a value is defined (not null or undefined)
|
|
382
|
+
*/
|
|
383
|
+
export function assertDefined(value, message) {
|
|
384
|
+
if (value === null || value === undefined) {
|
|
385
|
+
throw new Error(message || 'Assertion failed: Expected defined value');
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
/**
|
|
389
|
+
* Assert that an array contains a value
|
|
390
|
+
*/
|
|
391
|
+
export function assertContains(array, value, message) {
|
|
392
|
+
if (!array.includes(value)) {
|
|
393
|
+
throw new Error(message || `Assertion failed: Array does not contain ${JSON.stringify(value)}`);
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
/**
|
|
397
|
+
* Assert that a number is within a range
|
|
398
|
+
*/
|
|
399
|
+
export function assertInRange(value, min, max, message) {
|
|
400
|
+
if (value < min || value > max) {
|
|
401
|
+
throw new Error(message || `Assertion failed: ${value} is not in range [${min}, ${max}]`);
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
// ============================================================================
|
|
405
|
+
// Mock LLM Provider
|
|
406
|
+
// ============================================================================
|
|
407
|
+
/**
|
|
408
|
+
* Mock LLM provider for testing without actual API calls
|
|
409
|
+
*/
|
|
410
|
+
export class MockLLMProvider {
|
|
411
|
+
responses = new Map();
|
|
412
|
+
callCount = 0;
|
|
413
|
+
/**
|
|
414
|
+
* Set a mock response for a specific prompt pattern
|
|
415
|
+
*/
|
|
416
|
+
setResponse(pattern, response) {
|
|
417
|
+
const key = pattern instanceof RegExp ? pattern.source : pattern;
|
|
418
|
+
this.responses.set(key, response);
|
|
419
|
+
}
|
|
420
|
+
/**
|
|
421
|
+
* Mock complete method
|
|
422
|
+
*/
|
|
423
|
+
async complete(prompt) {
|
|
424
|
+
this.callCount++;
|
|
425
|
+
for (const [pattern, response] of this.responses) {
|
|
426
|
+
const regex = new RegExp(pattern);
|
|
427
|
+
if (regex.test(prompt)) {
|
|
428
|
+
return typeof response === 'string' ? response : JSON.stringify(response);
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
return 'Mock response';
|
|
432
|
+
}
|
|
433
|
+
/**
|
|
434
|
+
* Mock completeJson method
|
|
435
|
+
*/
|
|
436
|
+
async completeJson(prompt) {
|
|
437
|
+
this.callCount++;
|
|
438
|
+
for (const [pattern, response] of this.responses) {
|
|
439
|
+
const regex = new RegExp(pattern);
|
|
440
|
+
if (regex.test(prompt)) {
|
|
441
|
+
return { data: response };
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
return { data: null };
|
|
445
|
+
}
|
|
446
|
+
/**
|
|
447
|
+
* Reset the mock provider
|
|
448
|
+
*/
|
|
449
|
+
reset() {
|
|
450
|
+
this.responses.clear();
|
|
451
|
+
this.callCount = 0;
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
// ============================================================================
|
|
455
|
+
// Example Test Suite Template
|
|
456
|
+
// ============================================================================
|
|
457
|
+
/**
|
|
458
|
+
* Example test suite demonstrating usage
|
|
459
|
+
*/
|
|
460
|
+
export async function exampleTestSuite() {
|
|
461
|
+
console.log('๐งช Running Example Test Suite...\n');
|
|
462
|
+
// Test 1: Mock data generation
|
|
463
|
+
const intent = mockIntentAnalysis({ confidence: 0.95 });
|
|
464
|
+
assertEqual(intent.primaryIntent, 'code_generation', 'Intent should be code_generation');
|
|
465
|
+
// Test 2: Performance benchmark
|
|
466
|
+
const results = await benchmarkCompare([
|
|
467
|
+
{
|
|
468
|
+
name: 'Sequential processing',
|
|
469
|
+
fn: async () => {
|
|
470
|
+
for (let i = 0; i < 10; i++) {
|
|
471
|
+
await Promise.resolve(i);
|
|
472
|
+
}
|
|
473
|
+
},
|
|
474
|
+
},
|
|
475
|
+
{
|
|
476
|
+
name: 'Parallel processing',
|
|
477
|
+
fn: async () => {
|
|
478
|
+
await Promise.all(Array.from({ length: 10 }, (_, i) => Promise.resolve(i)));
|
|
479
|
+
},
|
|
480
|
+
},
|
|
481
|
+
], 50);
|
|
482
|
+
printBenchmarkResults(results);
|
|
483
|
+
// Test 3: Temporary directory
|
|
484
|
+
await withTestDir(async (dir) => {
|
|
485
|
+
const file = await writeTestFile(dir, 'test.txt', 'Hello, World!');
|
|
486
|
+
assertTrue(file.includes('test.txt'), 'File path should contain test.txt');
|
|
487
|
+
});
|
|
488
|
+
console.log('โ
All tests passed!\n');
|
|
489
|
+
}
|
|
490
|
+
//# sourceMappingURL=test-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-utils.js","sourceRoot":"","sources":["../../src/tools/test-utils.ts"],"names":[],"mappings":"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"}
|