def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self.sut = StartingCoverageOperator()
class TestStartingCoverageOperator(CoverageOperatorTestCommon):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self.sut = StartingCoverageOperator()

    def test_operators_execute_with_some_chance(self):
        # Given:
        self.environment_mock.get_sentence_length.return_value = 1
        self.environment_mock.is_sentence_positive.return_value = True

        # When/Then:
        self.operator_executes_with_some_chance_scenario()

    def test_given_sentence_of_length_greater_than_1_should_not_cover_it(self):
        # Given:
        self.environment_mock.get_sentence_length.return_value = 5

        # When:
        result = self.sut.cover(self.cyk_service_mock, self.environment_mock,
                                self.rule_population_mock, self.coordinates)

        # Then:
        assert_that(result, is_(EmptyProduction(Detector(self.coordinates))))

    def test_given_positivity_of_sentence_unknown__no_coverage_should_occur(self):
        # Given:
        self.environment_mock.get_sentence_length.return_value = 1
        self.environment_mock.is_sentence_positive.return_value = None

        # When:
        result = self.sut.cover(self.cyk_service_mock, self.environment_mock,
                                self.rule_population_mock, self.coordinates)

        # Then:
        assert_that(result, is_(EmptyProduction(Detector(self.coordinates))))

    def test_given_negative_sentence__no_coverage_should_occur(self):
        # Given:
        self.environment_mock.get_sentence_length.return_value = 1
        self.environment_mock.is_sentence_positive.return_value = False

        # When:
        result = self.sut.cover(self.cyk_service_mock, self.environment_mock,
                                self.rule_population_mock, self.coordinates)

        # Then:
        assert_that(result, is_(EmptyProduction(Detector(self.coordinates))))

    def test_given_positive_sentence_of_length_1__coverage_should_occur(self):
        # Given:
        self.environment_mock.get_sentence_symbol.return_value = Symbol(hash('a'))
        self.environment_mock.get_sentence_length.return_value = 1
        self.environment_mock.is_sentence_positive.return_value = True

        # When:
        result = self.sut.cover(self.cyk_service_mock, self.environment_mock,
                                self.rule_population_mock, self.coordinates)

        # Then:
        assert_that(result, is_(equal_to(Production(
            Detector(self.coordinates),
            TerminalRule(self.rule_population_mock.starting_symbol, Symbol(hash('a')))))))