def test_add_transition(self): # initial state s0 = 0 # init transition matrix tm = MutableTransitionMatrix(s0) self.assertEqual(tm.get_num_states(), 1) self.assertEqual(tm.get_num_transitions(), 0) # states s1 = tm.add_state() self.assertEqual(tm.get_num_states(), 2) # add s0 a s1 tm.add_transition(s0, 'a', s1) self.assertEqual(tm.get_num_states(), 2) self.assertEqual(tm.get_num_transitions(), 1) self.assertEqual(tm.get_target(s0, 'a'), s1) # add s0 b s0 tm.add_transition(s0, 'b', s0) self.assertEqual(tm.get_num_states(), 2) self.assertEqual(tm.get_num_transitions(), 2) self.assertEqual(tm.get_target(s0, 'a'), s1) self.assertEqual(tm.get_target(s0, 'b'), s0) # add s1 a s1 tm.add_transition(s1, 'a', s1) self.assertEqual(tm.get_num_states(), 2) self.assertEqual(tm.get_num_transitions(), 3) self.assertEqual(tm.get_target(s0, 'a'), s1) self.assertEqual(tm.get_target(s0, 'b'), s0) self.assertEqual(tm.get_target(s1, 'a'), s1) # add s1 b s1 tm.add_transition(s1, 'b', s1) self.assertEqual(tm.get_num_states(), 2) self.assertEqual(tm.get_num_transitions(), 4) self.assertEqual(tm.get_target(s0, 'a'), s1) self.assertEqual(tm.get_target(s0, 'b'), s0) self.assertEqual(tm.get_target(s1, 'a'), s1) self.assertEqual(tm.get_target(s1, 'b'), s1)
def test_get_target_none(self): s0 = 0 tm = MutableTransitionMatrix(s0) self.assertEqual(tm.get_target(s0, 'a'), None)
def test_add_state__has_state__get_states(self): tm = MutableTransitionMatrix(0) self.assertEqual(tm.get_num_states(), 1) self.assertTrue(tm.has_state(0)) self.assertFalse(tm.has_state(1)) # add state s1 = tm.add_state() # test self.assertEqual(tm.get_num_states(), 2) self.assertTrue(tm.has_state(0)) self.assertTrue(tm.has_state(s1)) self.assertTrue(tm.has_state(0)) self.assertTrue(tm.has_state(1)) # check states self.assertEqual(tm.get_states(), [0, 1])