def test_parent_combinations_should_be_executed(self):
        # When:
        self.sut.execute(self.environment_mock, self.rule_population_mock)

        # Then:
        assert_that(self.children_created, are_(
            [
                (self.sut, 1, self.cyk_service_mock),
                (self.sut, 2, self.cyk_service_mock),
                (self.sut, 3, self.cyk_service_mock),
                (self.sut, 4, self.cyk_service_mock)
            ]
        ))
    def test_cells_in_row_should_be_executed(self):
        # Given:
        self.environment_mock.get_row_length.return_value = 2

        # When:
        self.sut.execute(self.environment_mock, self.rule_population_mock)

        # Then:
        assert_that(self.children_created, are_(
            [
                (self.sut, 0, self.cyk_service_mock),
                (self.sut, 1, self.cyk_service_mock)
            ]
        ))
    def test_symbol_pair_combinations_should_be_executed(self):
        # Given:
        self.environment_mock.get_left_parent_symbol_count.return_value = 2
        self.environment_mock.get_right_parent_symbol_count.return_value = 3

        # When:
        self.sut.execute(self.environment_mock, self.rule_population_mock)

        # Then:
        assert_that(self.children_created, are_(
            [
                (self.sut, 0, 0, self.cyk_service_mock),
                (self.sut, 0, 1, self.cyk_service_mock),
                (self.sut, 0, 2, self.cyk_service_mock),
                (self.sut, 1, 0, self.cyk_service_mock),
                (self.sut, 1, 1, self.cyk_service_mock),
                (self.sut, 1, 2, self.cyk_service_mock)
            ]
        ))