summaryrefslogtreecommitdiff
path: root/tests/type-consistency
diff options
context:
space:
mode:
Diffstat (limited to 'tests/type-consistency')
-rw-r--r--tests/type-consistency/harness.ts2
-rw-r--r--tests/type-consistency/spec/index.ts3
-rw-r--r--tests/type-consistency/spec/tostring.ts41
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]]" },
+ ],
+ });