Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
fja
eval
Commits
e43db9f2
Commit
e43db9f2
authored
Apr 03, 2021
by
Vladimír Štill
Browse files
test: More canonization tests
parent
c4aad1ac
Pipeline
#76608
passed with stage
in 51 seconds
Changes
1
Pipelines
1
Show whitespace changes
Inline
Side-by-side
test_reg.py
View file @
e43db9f2
from
lib.parsing.parser
import
Parser
from
lib.dfa
import
DFA
def
is_can
(
dfa
:
str
)
->
bool
:
parser
=
Parser
()
return
parse
r
.
str_to_dfa
(
dfa
).
is_canonical
()
return
parse
(
dfa
).
is_canonical
()
def
parse
(
dfa
:
str
)
->
DFA
:
parser
=
Parser
()
return
parser
.
str_to_dfa
(
dfa
)
def
to_str
(
dfa
:
DFA
)
->
str
:
parser
=
Parser
()
return
parser
.
dfa_to_str
(
dfa
)
def
test_can
()
->
None
:
assert
is_can
(
"init=1 (1,a)=1 (1,b)=2 (2,b)=1 (2,a)=1 final={2}"
)
ex1
=
"init=1 (1,a)=1 (1,b)=2 (2,b)=1 (2,a)=1 final={2}"
assert
is_can
(
ex1
)
assert
is_can
(
"init=1 (1,b)=3 (1,a)=2 (2,b)=1 (2,a)=1 (3,a)=2 (3,b)=2 final={2}"
)
assert
not
is_can
(
"init=1 (1,b)=3 (1,c)=2 (2,b)=1 (2,a)=1 (3,a)=2 (3,b)=2 final={2}"
)
assert
not
is_can
(
"init=1 (1,a)=1 (1,b)=2 (2,b)=1 (2,b)=1 (unreach,a)=1 (unreach,b)=unreach final={2}"
)
assert
DFA
.
is_identical
(
parse
(
ex1
).
canonize
(),
parse
(
ex1
))
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}"
)
assert
DFA
.
is_identical
(
auto_can
,
expect_can
),
f
"
{
to_str
(
auto_can
)
}
≠
{
to_str
(
expect_can
)
}
"
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment