-
-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathspec_generator.moon
More file actions
39 lines (35 loc) · 1.31 KB
/
spec_generator.moon
File metadata and controls
39 lines (35 loc) · 1.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import kv_table from require 'test_helpers'
{
module_imports: {'solve'},
generate_test: (case, level) ->
lines = if is_json_null case.expected
{
"puzzle = #{quote case.input.puzzle}",
"assert.is.falsy solve puzzle"
}
else
{
"puzzle = #{quote case.input.puzzle}",
"result = solve puzzle",
"expected = #{kv_table case.expected, level}",
"assert.is.same_kv result, expected"
}
table.concat [indent line, level for line in *lines], '\n'
test_helpers: [[
-- ----------------------------------------------------------
same_kv = (state, arguments) ->
actual = arguments[1]
return false if type(actual) != 'table'
expected = arguments[2]
size = (t) -> #[k for k, _ in pairs t]
return false if size(expected) != size(actual)
for k, v in pairs expected
return false if actual[k] != v
true
say = require 'say'
say\set 'assertion.same_kv.positive', 'Actual result\n%s\ndoes not have the same keys and values as expected\n%s'
say\set 'assertion.same_kv.negative', 'Actual result\n%s\nwas not supposed to be the same as expected\n%s'
assert\register 'assertion', 'same_kv', same_kv, 'assertion.same_kv.positive', 'assertion.same_kv.negative'
-- ----------------------------------------------------------
]]
}