def test_custom_object(self): class NonPrimitive: def __init__(self, value): self.value = value def __eq__(self, other): return self.value == other.value def __add__(self, other): return NonPrimitive(self.value + other.value) values = [NonPrimitive(v) for v in (1, 2, 3, 99, 4, 5)] self.assertEqual((2, 3), find_sum_range(values, NonPrimitive(102)))
def part_two(values, invalid_target): [start_index, end_index] = find_sum_range(values, invalid_target) invalid_range = values[start_index:end_index + 1] result = min(invalid_range) + max(invalid_range) return result
def test_single_item(self): self.assertEqual((3, 3), find_sum_range([1, 2, 3, 99, 4, 5], 99))
def test_full_list(self): self.assertEqual((0, 5), find_sum_range([1, 2, 3, 99, 4, 5], 114))
def test_centre(self): self.assertEqual((2, 4), find_sum_range([1, 2, 3, 99, 4, 5], 106))
def test_end(self): self.assertEqual((2, 4), find_sum_range([1, 2, 3, 4, 5], 12))
def test_start_zero(self): self.assertEqual((0, 2), find_sum_range([1, 2, -3, 3, 4, 5], 0))
def test_start(self): self.assertEqual((0, 2), find_sum_range([1, 2, 3, 4, 5], 6))
def test_NoSuchRange(self): self.assertIsNone(find_sum_range([1, 2, 3, 4], 99))