def test_case_11(self):
     testInput = [
         [1, 1, 0, 0, 0, 0, 1, 1],
         [1, 0, 1, 1, 1, 1, 0, 1],
         [0, 1, 1, 0, 0, 0, 1, 1],
     ]
     expected = [3, 5, 6]
     self.assertEqual(sorted(program.riverSizes(testInput)), expected)
 def test_case_6(self):
     testInput = [
         [1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0],
         [1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0],
         [0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1],
         [1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0],
         [1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1],
     ]
     expected = [1, 1, 2, 2, 5, 21]
     self.assertEqual(sorted(riverSizes(testInput)), expected)
 def test_case_9(self):
     testInput = [
         [0, 0, 0, 0, 0, 0, 0],
         [0, 0, 0, 0, 0, 0, 0],
         [0, 0, 0, 0, 0, 0, 0],
         [0, 0, 0, 0, 0, 0, 0],
         [0, 0, 0, 0, 0, 0, 0],
         [0, 0, 0, 0, 0, 0, 0],
         [0, 0, 0, 0, 0, 0, 0],
     ]
     expected = []
     self.assertEqual(sorted(program.riverSizes(testInput)), expected)
 def test_case_10(self):
     testInput = [
         [1, 1, 1, 1, 1, 1, 1],
         [1, 1, 1, 1, 1, 1, 1],
         [1, 1, 1, 1, 1, 1, 1],
         [1, 1, 1, 1, 1, 1, 1],
         [1, 1, 1, 1, 1, 1, 1],
         [1, 1, 1, 1, 1, 1, 1],
         [1, 1, 1, 1, 1, 1, 1],
     ]
     expected = [49]
     self.assertEqual(sorted(riverSizes(testInput)), expected)
 def test_case_3(self):
     testInput = [[1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0]]
     expected = [1, 2, 3]
     self.assertEqual(sorted(program.riverSizes(testInput)), expected)
 def test_case_2(self):
     testInput = [[1]]
     expected = [1]
     self.assertEqual(sorted(program.riverSizes(testInput)), expected)
 def test_case_13(self):
     # this is just to add a more clear performance gauge to runtime
     for x in range(200)[1:]:
         matrix = np.random.randint(2, size=(x, x)).tolist()
         riverSizes(matrix)
 def test_case_1(self):
     testInput = [[0]]
     expected = []
     self.assertEqual(sorted(riverSizes(testInput)), expected)