Пример #1
0
    def setUp(self):
        self.root1 = mock()
        self.state1 = mock()
        self.state2 = mock()
        self.state3 = mock()

        self.suffix1 = mock()
        self.suffix2 = mock()

        self.suffix_group1 = mock()

        self.suffix_group1.suffixes = []

        self.decorated = mock()
        self.decorator = SuffixGraphDecorator(self.decorated)
Пример #2
0
    def setUp(self):
        self.root1 = mock()
        self.state1 = mock()
        self.state2 = mock()
        self.state3 = mock()

        self.suffix1 = mock()
        self.suffix2 = mock()

        self.suffix_group1 = mock()

        self.suffix_group1.suffixes = []

        self.decorated = mock()
        self.decorator = SuffixGraphDecorator(self.decorated)
Пример #3
0
class SuffixGraphTest(unittest.TestCase):
    def setUp(self):
        self.root1 = mock()
        self.state1 = mock()
        self.state2 = mock()
        self.state3 = mock()

        self.suffix1 = mock()
        self.suffix2 = mock()

        self.suffix_group1 = mock()

        self.suffix_group1.suffixes = []

        self.decorated = mock()
        self.decorator = SuffixGraphDecorator(self.decorated)

    def test_initialize(self):
        self.decorator.initialize()

        verify(self.decorated).initialize()

    def test_should_get_default_root_state_when_there_is_one(self):
        when(self.decorated)._find_default_root_state(self.root1).thenReturn(self.state1)

        assert_that(self.decorator.get_default_root_state(self.root1), same_instance(self.state1))
        verify(self.decorated)._find_default_root_state(self.root1)

    def test_should_get_default_root_state_when_there_is_not_one(self):
        when(self.decorated)._find_default_root_state(self.root1).thenReturn(None)

        try:
            self.decorator.get_default_root_state(self.root1)
            self.fail("Should've raised an exception when there is no default state found")
        except Exception:
            pass

        verify(self.decorated)._find_default_root_state(self.root1)

    def test_should_get_all_states_when_decorated_has_a_state(self):
        when(self.decorated).get_all_states().thenReturn([self.state1])
        self.decorator.all_states = {'A': self.state2, 'B': self.state3}

        assert_that(self.decorator.get_all_states(), equal_to([self.state1, self.state2, self.state3]))

        verify(self.decorated).get_all_states()

    def test_should_get_all_states_when_decorated_doesnt_have_a_state(self):
        when(self.decorated).get_all_states().thenReturn(None)
        self.decorator.all_states = {'A': self.state1, 'B': self.state2}

        assert_that(self.decorator.get_all_states(), equal_to([self.state1, self.state2]))

        verify(self.decorated).get_all_states()

    def test_should_not_find_state_when_it_doesnt_exist_at_all(self):
        when(self.decorated).find_state('STATE_NAME').thenReturn(None)
        self.decorator.all_states = {}

        assert_that(not self.decorator.find_state('STATE_NAME'))
        verify(self.decorated).find_state('STATE_NAME')

    def test_should_find_state_when_it_is_registered_in_decorated(self):
        when(self.decorated).find_state('STATE_NAME').thenReturn(self.state1)
        self.decorator.all_states = {}

        assert_that(self.decorator.find_state('STATE_NAME'), equal_to(self.state1))
        verify(self.decorated).find_state('STATE_NAME')

    def test_should_find_state_when_it_is_registered_in_decorator(self):
        when(self.decorated).find_state('STATE_NAME').thenReturn(None)
        self.decorator.all_states = {'STATE_NAME': self.state1}

        assert_that(self.decorator.find_state('STATE_NAME'), equal_to(self.state1))
        verify(self.decorated).find_state('STATE_NAME')

    def test_should_not_find_state_when_it_is_registered_in_decorated_and_decorator(self):
        when(self.decorated).find_state('STATE_NAME').thenReturn(self.state1)
        self.decorator.all_states = {'STATE_NAME': self.state2}

        try:
            self.decorator.find_state('STATE_NAME')
            self.fail("Should've raised an exception, since found state is ambiguous")
        except Exception:
            pass

        verify(self.decorated).find_state('STATE_NAME')

    def test_should_not_find_suffix_when_it_doesnt_exist_at_all(self):
        when(self.decorated).find_suffix('SUFFIX_NAME').thenReturn(None)
        self.decorator.all_suffixes = {}

        assert_that(not self.decorator.find_suffix('SUFFIX_NAME'))
        verify(self.decorated).find_suffix('SUFFIX_NAME')

    def test_should_find_suffix_when_it_is_registered_in_decorated(self):
        when(self.decorated).find_suffix('SUFFIX_NAME').thenReturn(self.suffix1)
        self.decorator.all_suffixes = {}

        assert_that(self.decorator.find_suffix('SUFFIX_NAME'), equal_to(self.suffix1))
        verify(self.decorated).find_suffix('SUFFIX_NAME')

    def test_should_find_suffix_when_it_is_registered_in_decorator(self):
        when(self.decorated).find_suffix('SUFFIX_NAME').thenReturn(None)
        self.decorator.all_suffixes = {'SUFFIX_NAME': self.suffix1}

        assert_that(self.decorator.find_suffix('SUFFIX_NAME'), equal_to(self.suffix1))
        verify(self.decorated).find_suffix('SUFFIX_NAME')

    def test_should_not_find_suffix_when_it_is_registered_in_decorated_and_decorator(self):
        when(self.decorated).find_suffix('SUFFIX_NAME').thenReturn(self.suffix1)
        self.decorator.all_suffixes = {'SUFFIX_NAME': self.suffix2}

        try:
            self.decorator.find_suffix('SUFFIX_NAME')
            self.fail("Should've raised an exception, since found suffix is ambiguous")
        except Exception:
            pass

        verify(self.decorated).find_suffix('SUFFIX_NAME')

    def test_should_register_a_state(self):
        when(self.decorated).find_state('STATE_NAME').thenReturn(None)
        self.decorator.all_states = {}

        self.decorator._register_state('STATE_NAME', 'STATE_TYPE', 'STATE_SYN_CAT')

        verify(self.decorated).find_state('STATE_NAME')
        assert_that(self.decorator.all_states, has_length(1))
        assert_that(self.decorator.all_states['STATE_NAME'].name, equal_to('STATE_NAME'))
        assert_that(self.decorator.all_states['STATE_NAME'].type, equal_to('STATE_TYPE'))
        assert_that(self.decorator.all_states['STATE_NAME'].syntactic_category, equal_to('STATE_SYN_CAT'))

    def test_should_not_register_a_state_when_it_exists_in_decorated(self):
        when(self.decorated).find_state('STATE_NAME').thenReturn(self.state1)
        self.decorator.all_states = {}

        try:
            self.decorator._register_state('STATE_NAME', 'STATE_TYPE', 'STATE_SYN_CAT')
            self.fail("Should've raised an exception, since the state is already registered in decorated")
        except Exception:
            pass

        verify(self.decorated).find_state('STATE_NAME')
        assert_that(self.decorator.all_states, has_length(0))

    def test_should_not_register_a_state_when_it_exists_in_decorator(self):
        when(self.decorated).find_state('STATE_NAME').thenReturn(None)
        self.decorator.all_states = {'STATE_NAME': self.state1}

        try:
            self.decorator._register_state('STATE_NAME', 'STATE_TYPE', 'STATE_SYN_CAT')
            self.fail("Should've raised an exception, since the state is already registered in decorator")
        except Exception:
            pass

        verify(self.decorated).find_state('STATE_NAME')
        assert_that(self.decorator.all_states, has_length(1))

    def test_should_register_a_suffix(self):
        when(self.decorated).find_suffix('SUFFIX_NAME').thenReturn(None)
        self.decorator.all_suffixes = {}

        self.decorator._register_suffix('SUFFIX_NAME', self.suffix_group1, 'SUFFIX_NAME_PRETTY', True)

        verify(self.decorated).find_suffix('SUFFIX_NAME')
        assert_that(self.decorator.all_suffixes, has_length(1))
        assert_that(self.decorator.all_suffixes['SUFFIX_NAME'].name, equal_to('SUFFIX_NAME'))
        assert_that(self.decorator.all_suffixes['SUFFIX_NAME'].group, same_instance(self.suffix_group1))
        assert_that(self.decorator.all_suffixes['SUFFIX_NAME'].pretty_name, equal_to('SUFFIX_NAME_PRETTY'))
        assert_that(self.decorator.all_suffixes['SUFFIX_NAME'].allow_repetition)

    def test_should_not_register_a_suffix_when_it_exists_in_decorated(self):
        when(self.decorated).find_suffix('SUFFIX_NAME').thenReturn(self.suffix1)
        self.decorator.all_suffixes = {}

        try:
            self.decorator._register_suffix('SUFFIX_NAME', self.suffix_group1, 'SUFFIX_NAME_PRETTY', True)
            self.fail("Should've raised an exception, since the suffix is already registered in decorated")
        except Exception:
            pass

        verify(self.decorated).find_suffix('SUFFIX_NAME')
        assert_that(self.decorator.all_suffixes, has_length(0))

    def test_should_not_register_a_suffix_when_it_exists_in_decorator(self):
        when(self.decorated).find_suffix('SUFFIX_NAME').thenReturn(None)
        self.decorator.all_suffixes = {'SUFFIX_NAME': self.suffix1}

        try:
            self.decorator._register_suffix('SUFFIX_NAME', self.suffix_group1, 'SUFFIX_NAME_PRETTY', True)
            self.fail("Should've raised an exception, since the suffix is already registered in decorator")
        except Exception:
            pass

        verify(self.decorated).find_suffix('SUFFIX_NAME')
        assert_that(self.decorator.all_suffixes, has_length(1))
        assert_that(self.decorator.all_suffixes, equal_to({'SUFFIX_NAME': self.suffix1}))
Пример #4
0
class SuffixGraphTest(unittest.TestCase):
    def setUp(self):
        self.root1 = mock()
        self.state1 = mock()
        self.state2 = mock()
        self.state3 = mock()

        self.suffix1 = mock()
        self.suffix2 = mock()

        self.suffix_group1 = mock()

        self.suffix_group1.suffixes = []

        self.decorated = mock()
        self.decorator = SuffixGraphDecorator(self.decorated)

    def test_initialize(self):
        self.decorator.initialize()

        verify(self.decorated).initialize()

    def test_should_get_default_root_state_when_there_is_one(self):
        when(self.decorated)._find_default_root_state(self.root1).thenReturn(
            self.state1)

        assert_that(self.decorator.get_default_root_state(self.root1),
                    same_instance(self.state1))
        verify(self.decorated)._find_default_root_state(self.root1)

    def test_should_get_default_root_state_when_there_is_not_one(self):
        when(self.decorated)._find_default_root_state(
            self.root1).thenReturn(None)

        try:
            self.decorator.get_default_root_state(self.root1)
            self.fail(
                "Should've raised an exception when there is no default state found"
            )
        except Exception:
            pass

        verify(self.decorated)._find_default_root_state(self.root1)

    def test_should_get_all_states_when_decorated_has_a_state(self):
        when(self.decorated).get_all_states().thenReturn([self.state1])
        self.decorator.all_states = {'A': self.state2, 'B': self.state3}

        assert_that(self.decorator.get_all_states(),
                    equal_to([self.state1, self.state2, self.state3]))

        verify(self.decorated).get_all_states()

    def test_should_get_all_states_when_decorated_doesnt_have_a_state(self):
        when(self.decorated).get_all_states().thenReturn(None)
        self.decorator.all_states = {'A': self.state1, 'B': self.state2}

        assert_that(self.decorator.get_all_states(),
                    equal_to([self.state1, self.state2]))

        verify(self.decorated).get_all_states()

    def test_should_not_find_state_when_it_doesnt_exist_at_all(self):
        when(self.decorated).find_state('STATE_NAME').thenReturn(None)
        self.decorator.all_states = {}

        assert_that(not self.decorator.find_state('STATE_NAME'))
        verify(self.decorated).find_state('STATE_NAME')

    def test_should_find_state_when_it_is_registered_in_decorated(self):
        when(self.decorated).find_state('STATE_NAME').thenReturn(self.state1)
        self.decorator.all_states = {}

        assert_that(self.decorator.find_state('STATE_NAME'),
                    equal_to(self.state1))
        verify(self.decorated).find_state('STATE_NAME')

    def test_should_find_state_when_it_is_registered_in_decorator(self):
        when(self.decorated).find_state('STATE_NAME').thenReturn(None)
        self.decorator.all_states = {'STATE_NAME': self.state1}

        assert_that(self.decorator.find_state('STATE_NAME'),
                    equal_to(self.state1))
        verify(self.decorated).find_state('STATE_NAME')

    def test_should_not_find_state_when_it_is_registered_in_decorated_and_decorator(
            self):
        when(self.decorated).find_state('STATE_NAME').thenReturn(self.state1)
        self.decorator.all_states = {'STATE_NAME': self.state2}

        try:
            self.decorator.find_state('STATE_NAME')
            self.fail(
                "Should've raised an exception, since found state is ambiguous"
            )
        except Exception:
            pass

        verify(self.decorated).find_state('STATE_NAME')

    def test_should_not_find_suffix_when_it_doesnt_exist_at_all(self):
        when(self.decorated).find_suffix('SUFFIX_NAME').thenReturn(None)
        self.decorator.all_suffixes = {}

        assert_that(not self.decorator.find_suffix('SUFFIX_NAME'))
        verify(self.decorated).find_suffix('SUFFIX_NAME')

    def test_should_find_suffix_when_it_is_registered_in_decorated(self):
        when(self.decorated).find_suffix('SUFFIX_NAME').thenReturn(
            self.suffix1)
        self.decorator.all_suffixes = {}

        assert_that(self.decorator.find_suffix('SUFFIX_NAME'),
                    equal_to(self.suffix1))
        verify(self.decorated).find_suffix('SUFFIX_NAME')

    def test_should_find_suffix_when_it_is_registered_in_decorator(self):
        when(self.decorated).find_suffix('SUFFIX_NAME').thenReturn(None)
        self.decorator.all_suffixes = {'SUFFIX_NAME': self.suffix1}

        assert_that(self.decorator.find_suffix('SUFFIX_NAME'),
                    equal_to(self.suffix1))
        verify(self.decorated).find_suffix('SUFFIX_NAME')

    def test_should_not_find_suffix_when_it_is_registered_in_decorated_and_decorator(
            self):
        when(self.decorated).find_suffix('SUFFIX_NAME').thenReturn(
            self.suffix1)
        self.decorator.all_suffixes = {'SUFFIX_NAME': self.suffix2}

        try:
            self.decorator.find_suffix('SUFFIX_NAME')
            self.fail(
                "Should've raised an exception, since found suffix is ambiguous"
            )
        except Exception:
            pass

        verify(self.decorated).find_suffix('SUFFIX_NAME')

    def test_should_register_a_state(self):
        when(self.decorated).find_state('STATE_NAME').thenReturn(None)
        self.decorator.all_states = {}

        self.decorator._register_state('STATE_NAME', 'STATE_TYPE',
                                       'STATE_SYN_CAT')

        verify(self.decorated).find_state('STATE_NAME')
        assert_that(self.decorator.all_states, has_length(1))
        assert_that(self.decorator.all_states['STATE_NAME'].name,
                    equal_to('STATE_NAME'))
        assert_that(self.decorator.all_states['STATE_NAME'].type,
                    equal_to('STATE_TYPE'))
        assert_that(self.decorator.all_states['STATE_NAME'].syntactic_category,
                    equal_to('STATE_SYN_CAT'))

    def test_should_not_register_a_state_when_it_exists_in_decorated(self):
        when(self.decorated).find_state('STATE_NAME').thenReturn(self.state1)
        self.decorator.all_states = {}

        try:
            self.decorator._register_state('STATE_NAME', 'STATE_TYPE',
                                           'STATE_SYN_CAT')
            self.fail(
                "Should've raised an exception, since the state is already registered in decorated"
            )
        except Exception:
            pass

        verify(self.decorated).find_state('STATE_NAME')
        assert_that(self.decorator.all_states, has_length(0))

    def test_should_not_register_a_state_when_it_exists_in_decorator(self):
        when(self.decorated).find_state('STATE_NAME').thenReturn(None)
        self.decorator.all_states = {'STATE_NAME': self.state1}

        try:
            self.decorator._register_state('STATE_NAME', 'STATE_TYPE',
                                           'STATE_SYN_CAT')
            self.fail(
                "Should've raised an exception, since the state is already registered in decorator"
            )
        except Exception:
            pass

        verify(self.decorated).find_state('STATE_NAME')
        assert_that(self.decorator.all_states, has_length(1))

    def test_should_register_a_suffix(self):
        when(self.decorated).find_suffix('SUFFIX_NAME').thenReturn(None)
        self.decorator.all_suffixes = {}

        self.decorator._register_suffix('SUFFIX_NAME', self.suffix_group1,
                                        'SUFFIX_NAME_PRETTY', True)

        verify(self.decorated).find_suffix('SUFFIX_NAME')
        assert_that(self.decorator.all_suffixes, has_length(1))
        assert_that(self.decorator.all_suffixes['SUFFIX_NAME'].name,
                    equal_to('SUFFIX_NAME'))
        assert_that(self.decorator.all_suffixes['SUFFIX_NAME'].group,
                    same_instance(self.suffix_group1))
        assert_that(self.decorator.all_suffixes['SUFFIX_NAME'].pretty_name,
                    equal_to('SUFFIX_NAME_PRETTY'))
        assert_that(
            self.decorator.all_suffixes['SUFFIX_NAME'].allow_repetition)

    def test_should_not_register_a_suffix_when_it_exists_in_decorated(self):
        when(self.decorated).find_suffix('SUFFIX_NAME').thenReturn(
            self.suffix1)
        self.decorator.all_suffixes = {}

        try:
            self.decorator._register_suffix('SUFFIX_NAME', self.suffix_group1,
                                            'SUFFIX_NAME_PRETTY', True)
            self.fail(
                "Should've raised an exception, since the suffix is already registered in decorated"
            )
        except Exception:
            pass

        verify(self.decorated).find_suffix('SUFFIX_NAME')
        assert_that(self.decorator.all_suffixes, has_length(0))

    def test_should_not_register_a_suffix_when_it_exists_in_decorator(self):
        when(self.decorated).find_suffix('SUFFIX_NAME').thenReturn(None)
        self.decorator.all_suffixes = {'SUFFIX_NAME': self.suffix1}

        try:
            self.decorator._register_suffix('SUFFIX_NAME', self.suffix_group1,
                                            'SUFFIX_NAME_PRETTY', True)
            self.fail(
                "Should've raised an exception, since the suffix is already registered in decorator"
            )
        except Exception:
            pass

        verify(self.decorated).find_suffix('SUFFIX_NAME')
        assert_that(self.decorator.all_suffixes, has_length(1))
        assert_that(self.decorator.all_suffixes,
                    equal_to({'SUFFIX_NAME': self.suffix1}))