zjfz-2020-fork/automata/Task204Test.py

53 lines
1.4 KiB
Python
Raw Permalink Normal View History

2021-01-16 09:00:47 +01:00
#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
Zadanie 204
Napisz funkcję `get_number_of_loops(automaton, symbol)`, która
oblicza liczbę pętli (tj. przejść od stanu z powrotem do danego
stanu) w zadanym automacie etykietowanych zadanym symbolem.
NAME: get_number_of_loops
PARAMS: automaton, char
RETURN: int
POINTS: 2
"""
import unittest
from Task204 import get_number_of_loops
from deterministic_automaton import DeterministicAutomaton
class Task204Test(unittest.TestCase):
"""Testy do zadania 204"""
def test_simple(self):
"""Prosty test."""
automaton = DeterministicAutomaton()
state_a = automaton.add_state()
state_b = automaton.add_state()
state_c = automaton.add_state()
automaton.mark_as_initial(state_b)
automaton.mark_as_final(state_a)
self.assertEqual(get_number_of_loops(automaton, 'b'), 0)
automaton.add_transition(state_b, 'a', state_a)
self.assertEqual(get_number_of_loops(automaton, 'a'), 0)
self.assertEqual(get_number_of_loops(automaton, 'b'), 0)
automaton.add_transition(state_b, 'b', state_b)
automaton.add_transition(state_c, 'b', state_c)
automaton.add_transition(state_a, 'a', state_a)
automaton.add_transition(state_a, 'b', state_b)
self.assertEqual(get_number_of_loops(automaton, 'a'), 1)
self.assertEqual(get_number_of_loops(automaton, 'b'), 2)
if __name__ == '__main__':
unittest.main()