test_harness #22
7
test/cases/if.ld
Normal file
7
test/cases/if.ld
Normal file
|
@ -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)
|
2
test/cases/list_atoms.ld
Normal file
2
test/cases/list_atoms.ld
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
& EXPECT [:one, 2, "three"]
|
||||||
|
[:one, 2, "three"]
|
2
test/cases/single_float.ld
Normal file
2
test/cases/single_float.ld
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
& EXPECT 12.123
|
||||||
|
12.123
|
2
test/cases/single_int.ld
Normal file
2
test/cases/single_int.ld
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
& EXPECT 42
|
||||||
|
42
|
2
test/cases/single_string.ld
Normal file
2
test/cases/single_string.ld
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
& EXPECT "foo"
|
||||||
|
"foo"
|
2
test/cases/tuple_keywords.ld
Normal file
2
test/cases/tuple_keywords.ld
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
& EXPECT (true, false, nil)
|
||||||
|
(true, false, nil)
|
18
test/run_tests.js
Normal file
18
test/run_tests.js
Normal file
|
@ -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()
|
||||||
|
})
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user