diff options
Diffstat (limited to 'tests/type-consistency')
| -rw-r--r-- | tests/type-consistency/harness.ts | 2 | ||||
| -rw-r--r-- | tests/type-consistency/spec/index.ts | 3 | ||||
| -rw-r--r-- | tests/type-consistency/spec/tostring.ts | 41 |
3 files changed, 44 insertions, 2 deletions
diff --git a/tests/type-consistency/harness.ts b/tests/type-consistency/harness.ts index a08e397..0102387 100644 --- a/tests/type-consistency/harness.ts +++ b/tests/type-consistency/harness.ts @@ -64,13 +64,13 @@ describe(\`${harnessName}\`, () => { }) { tests.push(`describe(\`${name}\`, () => { const PROGRAM = \`${program}\` as const; + const fn = createFn()(PROGRAM) ${cases.map( ({ input, output }) => `test(\`${JSON.stringify( input )} -> ${JSON.stringify(output)}\`, () => { const input: ${JSON.stringify(input)} = ${JSON.stringify(input)}; const expected: ${JSON.stringify(output)} = ${JSON.stringify(output)}; - const fn = createFn()(PROGRAM) const result = fn(input) expect(result).toStrictEqual(expected); diff --git a/tests/type-consistency/spec/index.ts b/tests/type-consistency/spec/index.ts index 4532493..b2da682 100644 --- a/tests/type-consistency/spec/index.ts +++ b/tests/type-consistency/spec/index.ts @@ -1,5 +1,6 @@ import array from "./array"; import functions from "./function"; import types from "./types"; +import tostring from "./tostring"; -export default [array, functions, types]; +export default [array, functions, types, tostring]; diff --git a/tests/type-consistency/spec/tostring.ts b/tests/type-consistency/spec/tostring.ts new file mode 100644 index 0000000..4fcb803 --- /dev/null +++ b/tests/type-consistency/spec/tostring.ts @@ -0,0 +1,41 @@ +import path from "path"; +import { createTestHarness } from "../harness"; + +export default createTestHarness({ + harnessName: "ToString", + generatedPath: path.join(__dirname, "..", "generated"), +}) + .createFunctionTest({ + name: "Passes through strings literally", + program: "fn(x, tostring(x))", + cases: [ + { input: "hello", output: "hello" }, + { input: "1", output: "1" }, + { input: "[1,2,3]", output: "[1,2,3]" }, + ], + }) + .createFunctionTest({ + name: "Is idempotent", + program: "fn(x, tostring(tostring(x)))", + cases: [ + { input: "hello", output: "hello" }, + { input: "1", output: "1" }, + { input: "[1,2,3]", output: "[1,2,3]" }, + ], + }) + .createFunctionTest({ + name: "Handles primitives", + program: "fn(x, tostring(x))", + cases: [ + { input: 5, output: "5" }, + { input: true, output: "true" }, + ], + }) + .createFunctionTest({ + name: "Handles arrays and nested arrays", + program: "fn(x, tostring(x))", + cases: [ + { input: [1, 2, 3], output: "[1, 2, 3]" }, + { input: [1, 2, [3, 4, 5]], output: "[1, 2, [3, 4, 5]]" }, + ], + }); |
