def test_composite_decider_can_be_created_from_list_of_linear_decider_lists(): assert CompositeDecider([ [ LinearDecider([1, 2, 3]), LinearDecider([4, 5, 6]), ], [ LinearDecider([7, 8, 9]), ], ])
def test_score_1st_decision_of_binary_average_comparator_decider(): decider = LinearDecider([-3, 1, 1, 1]) assert score(decider, [1, 1]) == 0 assert score(decider, [2, 2, 1]) == 0 assert score(decider, [3, 3, 3]) == 0 assert score(decider, [3, 3, 6]) == 0 assert score(decider, [3, 3, 7]) == 4 assert score(decider, [4, 4, 4, 9]) == 5
def test_comparator_decider_decide_on_greater_than_origin(): decider = LinearDecider([-1, 1]) assert decider.decide(7, [9]) assert decider.decide(5, [4, 6]) assert decider.decide(6, [7, 9]) assert decider.decide(5, [1, 2, 3, 8]) assert decider.decide(3, [2]) is False assert decider.decide(5, [5]) is False assert decider.decide(5, [9, 5]) is False assert decider.decide(5, [7, 4]) is False assert decider.decide(4, [7, 9, 2]) is False
def test_score_1st_decision_of_comparator_decider(): decider = LinearDecider([-1, 1]) assert score(decider, [1, 1]) == 0 assert score(decider, [9, 4]) == 0 assert score(decider, [3, 9]) == 6 assert score(decider, [2, 2, 2]) == 0 assert score(decider, [1, 1, 3]) == 2 assert score(decider, [1, 7, 1]) == 6 assert score(decider, [2, 1, 1]) == 0 assert score(decider, [1, 5, 9]) == 4
def test_fitness_of_comaprator_decider(): decider = LinearDecider([-1, 1]) assert fitness(decider, [1, 2, 3, 4, 5]) == 1 + 1 + 1 + 1 assert fitness(decider, [4, 1, 2, 3, 4, 5, 7, 9]) == 1 + 1 + 1 + 1 + 1 + 2 + 2 assert fitness(decider, [4, 3, 2, 5, 4, 5]) == 1 + 2 + 3 + 1
def test_score_1st_decision_of_on_decrease_decider(): decider = LinearDecider([0, 1, -1]) assert score(decider, [7, 2]) == 0 assert score(decider, [1, 1, 1]) == 0 assert score(decider, [1, 2, 3]) == 0 assert score(decider, [1, 5, 9, 7, 3]) == 6
def test_on_decrease_decider_decide_on_decrease(): decider = LinearDecider([0, 1, -1]) assert decider.decide(3, [1, 2, 3, 4, 3]) assert decider.decide(5, [4, 6]) is False assert decider.decide(5, [4, 4, 4, 4]) is False
def test_decider_evaluate_linear_combination_of_reversed_values_starting_with_orig( ): decider = LinearDecider([5, 2, 7]) assert decider.eval([10, 100, 1000]) == 5 * 10 + 2 * 1000 + 7 * 100
def test_create_decider(): assert LinearDecider([1, 2, 3])