def __init__( self, nfa: NFA = None, *, states: set = None, input_symbols: set = None, transitions: dict = None, initial_state: str = None, final_states: set = None, ): if nfa: self.nfa = nfa.copy() else: if not states: states = {*transitions.keys()} if not input_symbols: input_symbols = set() for v in transitions.values(): symbols = [*v.keys()] for symbol in symbols: if symbol != "": input_symbols.add(symbol) self.nfa = NFA( states=states.copy(), input_symbols=input_symbols.copy(), transitions=transitions.deepcopy(), initial_state=initial_state, final_states=final_states.copy(), ) self.nfa.validate()
def test_init_validation(self, validate): """Should validate NFA when initialized.""" NFA.copy(self.nfa) validate.assert_called_once_with()
def test_init_nfa(self): """Should copy NFA if passed into NFA constructor.""" new_nfa = NFA.copy(self.nfa) self.assert_is_copy(new_nfa, self.nfa)