From d12d48558327256522fad7e4497755dcf716f678 Mon Sep 17 00:00:00 2001 From: Scott Richmond Date: Sun, 24 Dec 2023 17:17:08 -0500 Subject: [PATCH] Add basic test harness, actually add files this time --- test/cases/if.ld | 7 +++++++ test/cases/list_atoms.ld | 2 ++ test/cases/single_float.ld | 2 ++ test/cases/single_int.ld | 2 ++ test/cases/single_string.ld | 2 ++ test/cases/tuple_keywords.ld | 2 ++ test/run_tests.js | 18 ++++++++++++++++++ 7 files changed, 35 insertions(+) create mode 100644 test/cases/if.ld create mode 100644 test/cases/list_atoms.ld create mode 100644 test/cases/single_float.ld create mode 100644 test/cases/single_int.ld create mode 100644 test/cases/single_string.ld create mode 100644 test/cases/tuple_keywords.ld create mode 100644 test/run_tests.js diff --git a/test/cases/if.ld b/test/cases/if.ld new file mode 100644 index 0000000..965f300 --- /dev/null +++ b/test/cases/if.ld @@ -0,0 +1,7 @@ +& EXPECT (:true, :false, :true, :false) +let true_literal = if true then :true else :false +let false_literal = if false then :true else :false +let truthy = if :truthy then :true else :false +let falsy = if nil then :true else :false + +(true_literal, false_literal, truthy, falsy) diff --git a/test/cases/list_atoms.ld b/test/cases/list_atoms.ld new file mode 100644 index 0000000..349936a --- /dev/null +++ b/test/cases/list_atoms.ld @@ -0,0 +1,2 @@ +& EXPECT [:one, 2, "three"] +[:one, 2, "three"] diff --git a/test/cases/single_float.ld b/test/cases/single_float.ld new file mode 100644 index 0000000..1383d7f --- /dev/null +++ b/test/cases/single_float.ld @@ -0,0 +1,2 @@ +& EXPECT 12.123 +12.123 diff --git a/test/cases/single_int.ld b/test/cases/single_int.ld new file mode 100644 index 0000000..46c6857 --- /dev/null +++ b/test/cases/single_int.ld @@ -0,0 +1,2 @@ +& EXPECT 42 +42 diff --git a/test/cases/single_string.ld b/test/cases/single_string.ld new file mode 100644 index 0000000..f06a042 --- /dev/null +++ b/test/cases/single_string.ld @@ -0,0 +1,2 @@ +& EXPECT "foo" +"foo" diff --git a/test/cases/tuple_keywords.ld b/test/cases/tuple_keywords.ld new file mode 100644 index 0000000..728ddbf --- /dev/null +++ b/test/cases/tuple_keywords.ld @@ -0,0 +1,2 @@ +& EXPECT (true, false, nil) +(true, false, nil) diff --git a/test/run_tests.js b/test/run_tests.js new file mode 100644 index 0000000..eee69b7 --- /dev/null +++ b/test/run_tests.js @@ -0,0 +1,18 @@ +import {run} from "../target/js/ludus.js" +import * as fs from "node:fs/promises" +import t from "tap" + +const case_path = "./cases" +const files = await fs.readdir(case_path) + +for (const file of files) { + const script = await fs.readFile(`${case_path}/${file}`, {encoding: "utf8"}) + const first_line = script.split("\n")[0] + const expected = first_line.split("EXPECT")[1].trim() + const result = run(script).result + t.test(`testing ${file}: EXPECT ${expected}, GOT ${result}`, + t => { + t.equal(expected, result) + t.end() + }) +}