Loading test_reg.py +8 −0 Original line number Original line Diff line number Diff line Loading @@ -21,3 +21,11 @@ def test_can() -> None: auto_can = parse("init=x (x,a)=z (x,b)=y (y,a)=z (y,b)=z (z,a)=z (z,b)=z final={z}").canonize() auto_can = parse("init=x (x,a)=z (x,b)=y (y,a)=z (y,b)=z (z,a)=z (z,b)=z final={z}").canonize() expect_can = parse("init=1 (1,a)=2 (1,b)=3 (2,a)=2 (2,b)=2 (3,a)=2 (3,b)=2 final={2}") expect_can = parse("init=1 (1,a)=2 (1,b)=3 (2,a)=2 (2,b)=2 (3,a)=2 (3,b)=2 final={2}") assert DFA.is_identical(auto_can, expect_can), f"{to_str(auto_can)} ≠ {to_str(expect_can)}" assert DFA.is_identical(auto_can, expect_can), f"{to_str(auto_can)} ≠ {to_str(expect_can)}" def test_invalid() -> None: try: lib.parser.dfa("init=A (A,ab)=A (A,c)=B (B,ab)=B final={B}") assert False, "should not parse (long/compound terminal)" except: pass Loading
test_reg.py +8 −0 Original line number Original line Diff line number Diff line Loading @@ -21,3 +21,11 @@ def test_can() -> None: auto_can = parse("init=x (x,a)=z (x,b)=y (y,a)=z (y,b)=z (z,a)=z (z,b)=z final={z}").canonize() auto_can = parse("init=x (x,a)=z (x,b)=y (y,a)=z (y,b)=z (z,a)=z (z,b)=z final={z}").canonize() expect_can = parse("init=1 (1,a)=2 (1,b)=3 (2,a)=2 (2,b)=2 (3,a)=2 (3,b)=2 final={2}") expect_can = parse("init=1 (1,a)=2 (1,b)=3 (2,a)=2 (2,b)=2 (3,a)=2 (3,b)=2 final={2}") assert DFA.is_identical(auto_can, expect_can), f"{to_str(auto_can)} ≠ {to_str(expect_can)}" assert DFA.is_identical(auto_can, expect_can), f"{to_str(auto_can)} ≠ {to_str(expect_can)}" def test_invalid() -> None: try: lib.parser.dfa("init=A (A,ab)=A (A,c)=B (B,ab)=B final={B}") assert False, "should not parse (long/compound terminal)" except: pass