11"""Tests for epsilon NFA."""
22
3+ from typing import List , Tuple
34import copy
45import networkx
56
@@ -101,6 +102,7 @@ def test_union0(self) -> None:
101102
102103 def test_union1 (self ) -> None :
103104 """Tests the union of three ENFAs.
105+
104106 Union is (a*b)|(ab+)|c.
105107 """
106108 enfa0 = get_enfa_example0 ()
@@ -133,6 +135,7 @@ def test_concatenate0(self) -> None:
133135
134136 def test_concatenate1 (self ) -> None :
135137 """Tests the concatenation of three ENFAs.
138+
136139 Concatenation is a*bc((ab+)|c).
137140 """
138141 enfa0 = get_enfa_example0 ()
@@ -162,6 +165,7 @@ def test_kleene0(self) -> None:
162165
163166 def test_kleene1 (self ) -> None :
164167 """Tests the kleene star of an ENFA.
168+
165169 Expression is ((ab+)|c)*.
166170 """
167171 enfa = get_enfa_example2 ()
@@ -560,7 +564,8 @@ def test_max_length_zero_not_accepting_empty_string(self) -> None:
560564 assert not accepted_words
561565
562566
563- def get_digits_enfa ():
567+ def get_digits_enfa () -> Tuple [EpsilonNFA , List [Symbol ],
568+ Symbol , Symbol , Symbol , Symbol ]:
564569 """An epsilon NFA to recognize digits."""
565570 epsilon = Epsilon ()
566571 plus = Symbol ("+" )
@@ -593,8 +598,9 @@ def get_digits_enfa():
593598 return enfa , digits , epsilon , plus , minus , point
594599
595600
596- def get_enfa_example0 ():
597- """Gives an example ENFA
601+ def get_enfa_example0 () -> EpsilonNFA :
602+ """Gives an example ENFA.
603+
598604 Accepts a*b.
599605 """
600606 enfa0 = EpsilonNFA ()
@@ -611,8 +617,9 @@ def get_enfa_example0():
611617 return enfa0
612618
613619
614- def get_enfa_example1 ():
615- """Gives an example ENFA
620+ def get_enfa_example1 () -> EpsilonNFA :
621+ """Gives an example ENFA.
622+
616623 Accepts c.
617624 """
618625 enfa1 = EpsilonNFA ()
@@ -625,16 +632,17 @@ def get_enfa_example1():
625632 return enfa1
626633
627634
628- def get_enfa_example2 ():
629- """Gives an example ENFA
635+ def get_enfa_example2 () -> EpsilonNFA :
636+ """Gives an example ENFA.
637+
630638 Accepts (ab+)|c.
631639 """
632640 enfa = EpsilonNFA (start_states = {0 , 3 }, final_states = {2 , 4 })
633641 enfa .add_transitions ([(0 , "a" , 1 ), (1 , "b" , 2 ), (2 , "b" , 2 ), (3 , "c" , 4 )])
634642 return enfa
635643
636644
637- def get_enfa_example0_bis ():
645+ def get_enfa_example0_bis () -> EpsilonNFA :
638646 """A non minimal NFA, equivalent to example0."""
639647 enfa0 = EpsilonNFA ()
640648 state3 = State (3 )
@@ -657,7 +665,7 @@ def get_enfa_example0_bis():
657665 return enfa0
658666
659667
660- def get_example_non_minimal ():
668+ def get_example_non_minimal () -> EpsilonNFA :
661669 """A non minimal example a.a*.b."""
662670 enfa0 = EpsilonNFA ()
663671 state0 = State (0 )
@@ -684,7 +692,7 @@ def get_example_non_minimal():
684692 return enfa0
685693
686694
687- def get_enfa_example_for_word_generation ():
695+ def get_enfa_example_for_word_generation () -> EpsilonNFA :
688696 """ENFA example for the word generation test."""
689697 enfa = EpsilonNFA ()
690698 states = [State (x ) for x in range (9 )]
@@ -717,7 +725,7 @@ def get_enfa_example_for_word_generation():
717725 return enfa
718726
719727
720- def get_cyclic_enfa_example ():
728+ def get_cyclic_enfa_example () -> EpsilonNFA :
721729 """ENFA example with a cycle on the path to the final state."""
722730 enfa = EpsilonNFA ()
723731 states = [State (x ) for x in range (4 )]
@@ -738,7 +746,7 @@ def get_cyclic_enfa_example():
738746 return enfa
739747
740748
741- def get_epsilon_cycle_enfa_example ():
749+ def get_epsilon_cycle_enfa_example () -> EpsilonNFA :
742750 """ENFA example with an epsilon cycle."""
743751 enfa = EpsilonNFA ()
744752 states = [State (x ) for x in range (4 )]
0 commit comments