import random
import unittest
from example import count_target_ranges


class InterviewTests(unittest.TestCase):
    def test_initial_prefix_and_repetition(self):
        self.assertEqual(count_target_ranges([2, -2, 2], 2), 3)
        self.assertEqual(count_target_ranges([0, 0], 0), 3)
        self.assertEqual(count_target_ranges([], 0), 0)

    def test_against_quadratic(self):
        rng = random.Random(19)
        for _ in range(200):
            values = [rng.randint(-5, 5) for _ in range(rng.randrange(15))]
            target = rng.randint(-10, 10)
            expected = 0
            for left in range(len(values)):
                total = 0
                for right in range(left, len(values)):
                    total += values[right]
                    expected += total == target
            self.assertEqual(count_target_ranges(values, target), expected)


if __name__ == '__main__':
    unittest.main()
