8 lines
790 B
TypeScript
8 lines
790 B
TypeScript
// Browser-runnable exercises (spec 4.3 type 6)
|
|
export type ExerciseLanguage = "js" | "ts";
|
|
export interface Assert { equal(actual: unknown, expected: unknown, message?: string): void; deepEqual(actual: unknown, expected: unknown, message?: string): void; ok(value: unknown, message?: string): void }
|
|
export interface ExerciseTest { name: string; run(mod: Record<string, unknown>, assert: Assert): void | Promise<void> }
|
|
// A tests file is an ES module: `export const tests: ExerciseTest[]`. Learner code is an ES module.
|
|
export interface TestResult { name: string; passed: boolean; message?: string; expected?: string; actual?: string }
|
|
export interface ExerciseRunner { language: ExerciseLanguage; run(learnerCode: string, testsModule: string, timeoutMs: number): Promise<TestResult[]> }
|