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

        self.sut = SimpleAddingRuleStrategy()

    def test_should_know_if_strategy_is_applicable(self):
        assert_that(
            self.sut.is_applicable(AddingRuleStrategyHint.expand_population),
            is_(True))
        assert_that(
            self.sut.is_applicable(AddingRuleStrategyHint.control_population_size),
            is_(False))
        assert_that(
            self.sut.is_applicable(AddingRuleStrategyHint.control_population_size_with_elitism),
            is_(False))

    def test_should_be_able_to_apply_strategy(self):
        self.sut.apply(self.rule_supervisor_mock, self.statistics_mock, self.rule,
                       self.rule_population_mock)
        self.rule_population_mock.add_rule.assert_called_once_with(self.rule, self.randomizer_mock)
        self.statistics_mock.on_added_new_rule.assert_called_once_with(self.rule)
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self.sut = SimpleAddingRuleStrategy()