Skip to content

Commit 3fb1d8f

Browse files
committed
Added test for compress
1 parent d2767cf commit 3fb1d8f

1 file changed

Lines changed: 27 additions & 4 deletions

File tree

tests/semantic/test_evaluator.py

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,15 @@
1414

1515
syntax = {
1616
"+1": FunctionType(INT, INT),
17+
"0": INT,
1718
"head": FunctionType(List(PolymorphicType("a")), PolymorphicType("a")),
1819
"non_reachable": PrimitiveType("non_reachable"),
1920
"non_productive": FunctionType(INT, STRING),
2021
}
2122

2223
semantics = {
2324
"+1": lambda x: x + 1,
25+
"0": 0,
2426
}
2527
max_depth = 4
2628
dsl = DSL(syntax)
@@ -35,7 +37,10 @@ def test_eval() -> None:
3537
program = pcfg.sample_program()
3638
try:
3739
for i in range(-25, 25):
38-
assert eval.eval(program, [i]) == program.size() + i - 1
40+
if len(program.used_variables()) == 0:
41+
assert eval.eval(program, [i]) == program.size() - 1
42+
else:
43+
assert eval.eval(program, [i]) == program.size() + i - 1
3944
except Exception as e:
4045
assert False, e
4146

@@ -48,7 +53,10 @@ def test_supports_list() -> None:
4853
program = pcfg.sample_program()
4954
try:
5055
for i in range(-25, 25):
51-
assert eval.eval(program, [i, [i]]) == program.size() + i - 1
56+
if len(program.used_variables()) == 0:
57+
assert eval.eval(program, [i]) == program.size() - 1
58+
else:
59+
assert eval.eval(program, [i]) == program.size() + i - 1
5260
except Exception as e:
5361
assert False, e
5462

@@ -61,7 +69,22 @@ def test_use_cache() -> None:
6169
program = pcfg.sample_program()
6270
try:
6371
for i in range(-25, 25):
64-
assert eval.eval(program, [i]) == program.size() + i - 1
65-
assert eval._cache[__tuplify__([i])][program] == program.size() + i - 1
72+
if len(program.used_variables()) == 0:
73+
assert eval.eval(program, [i]) == program.size() - 1
74+
assert eval._cache[__tuplify__([i])][program] == program.size() - 1
75+
else:
76+
assert eval.eval(program, [i]) == program.size() + i - 1
77+
assert (
78+
eval._cache[__tuplify__([i])][program] == program.size() + i - 1
79+
)
6680
except Exception as e:
6781
assert False, e
82+
83+
84+
def test_compress() -> None:
85+
eval = DSLEvaluator(dsl.instantiate_semantics(semantics))
86+
p = dsl.auto_parse_program("(+1 0)")
87+
pp = dsl.auto_parse_program("1", constants={"1": (INT, 1)})
88+
c = eval.compress(p)
89+
assert c != p
90+
assert c == pp

0 commit comments

Comments
 (0)