Files
troupe-standup/wizard-work/beam/test_trapping_rain_water.py

41 lines
1.1 KiB
Python

import unittest
from trapping_rain_water import trap, trap_prefix
class TestTrap(unittest.TestCase):
def test_empty(self):
self.assertEqual(trap([]), 0)
self.assertEqual(trap_prefix([]), 0)
def test_single(self):
self.assertEqual(trap([5]), 0)
def test_flat(self):
self.assertEqual(trap([2, 2, 2, 2]), 0)
def test_classic(self):
self.assertEqual(trap([0, 1, 0, 2, 1, 0, 1, 3, 2, 1, 2, 1]), 6)
def test_ascending(self):
self.assertEqual(trap([1, 2, 3, 4]), 0)
def test_descending(self):
self.assertEqual(trap([4, 3, 2, 1]), 0)
def test_two_peaks(self):
self.assertEqual(trap([3, 0, 2, 0, 4]), 7)
def test_agreement_random(self):
import random
rng = random.Random(42)
for _ in range(2000):
n = rng.randint(0, 40)
hs = [rng.randint(0, 9) for _ in range(n)]
self.assertEqual(trap(hs), trap_prefix(hs))
def test_large(self):
hs = [10**6] + [0] * 100000 + [10**6]
self.assertEqual(trap(hs), 10**6 * 100000)
if __name__ == "__main__":
unittest.main()