def test_angle_metric_order(self): """Test that the closer the angle is to straight line, the smaller it costs is""" terrain_map = [[1]*6 for _ in range(7)] A = Point(0, 0) B = Point(1, 2) C = Point(3, 4) D = Point(2, 1) E = Point(3, 5) F = Point(0, 3) model = Model(terrain_map, None, None, None, None, None, turn_penalty=lambda x: x**2) gentle_angle_weight = model._calculate_turn_penalty([A, B], [B, C]) harsh_angle_weight = model._calculate_turn_penalty([A, B], [B, D]) self.assertLess(gentle_angle_weight, harsh_angle_weight) zero_angle_weight = model._calculate_turn_penalty([A, B], [B, A]) self.assertLess(harsh_angle_weight, zero_angle_weight) straight_angle_weight = model._calculate_turn_penalty([A, B], [B, E]) self.assertLess(straight_angle_weight, gentle_angle_weight) medium_angle_weight = model._calculate_turn_penalty([A, B], [B, F]) self.assertLess(medium_angle_weight, harsh_angle_weight)