import random
import unittest
from example import prefix_maxima


class PrefixTests(unittest.TestCase):
    def test_edges(self):
        for values in ([], [8], [-4, -2], [2, 2, 2]):
            result, comparisons = prefix_maxima(values)
            self.assertEqual(result, [max(values[:i]) for i in range(1, len(values) + 1)])
            self.assertEqual(comparisons, max(0, len(values) - 1))

    def test_random_against_baseline(self):
        rng = random.Random(20261024)
        for n in range(50):
            values = [rng.randrange(-20, 21) for _ in range(n)]
            self.assertEqual(prefix_maxima(values)[0],
                             [max(values[:i]) for i in range(1, n + 1)])


if __name__ == '__main__':
    unittest.main()
