def test_pouring_water_in_stack_when_capcity_is_lower_and_overflows( self, size, k_liter_water): "Test pouring water" triangular_stack = TriangularStack(size=size, unit_capacity=self.unit_capacity) with self.assertRaises(OverflowException): triangular_stack.pour(k_liter_water)
def test_query_water_in_stack(self, size, k_liters_to_be_poured, row_column_tests): "Test querying for water in glass (row, column)" triangular_stack = TriangularStack(size=size, unit_capacity=self.unit_capacity) triangular_stack.pour(k_liters_to_be_poured) for (row, column, expected_value) in row_column_tests: self.assertEqual(triangular_stack.get_water_at(row, column), expected_value)
def solveWaterOverFlowFor(jth_glass: int, ith_row: int, k_liter: float) -> float: """ Function to solve water """ LOGGER.debug("j => {}, i => {}, k => {}".format(jth_glass, ith_row, k_liter)) unit_capacity = 0.250 triangular_stack = TriangularStack(size=ith_row + 1, unit_capacity=unit_capacity) triangular_stack.pour(k_liter) try: answer = triangular_stack.get_water_at(ith_row, jth_glass) except WaterNotFilledException as wnfe: # we dont care about it, just return 0 LOGGER.info(str(wnfe.message)) return 0
def setUp(self): """ setup of default stack """ self.rows = 7 self.unit_capacity = 0.250 self.defaultStack = TriangularStack(size=self.rows, unit_capacity=self.unit_capacity)
def test_query_water_in_stack_insufficent_water_poured( self, size, k_liters_to_be_poured, row_column_tests): "Test querying for water in glass (row, column)" triangular_stack = TriangularStack(size=size, unit_capacity=self.unit_capacity) triangular_stack.pour(k_liters_to_be_poured) for (row, column) in row_column_tests: with self.assertRaises(WaterNotFilledException): triangular_stack.get_water_at(row, column)
def test_query_water_in_stack_with_wrong_index(self, size, k_liters_to_be_poured, row_column_tests): "Test querying for water in glass (row, column)" triangular_stack = TriangularStack(size=size, unit_capacity=self.unit_capacity) triangular_stack.pour(k_liters_to_be_poured) for (row, column, expected_error) in row_column_tests: try: triangular_stack.get_water_at(row, column) except ValueError as value_error: self.assertEqual(str(value_error), str(expected_error))
def test_maximun_capacity_of_stack(self, size, capacity, max_size): "Test calculation of maximum size to throw sane errors" triangular_stack = TriangularStack(size=size, unit_capacity=capacity) self.assertEqual(triangular_stack.maximum_water_limit, max_size)
def test_pouring_water_in_stack_when_capacity_is_higher( self, size, k_liter_water): "Test pouring water" triangular_stack = TriangularStack(size=size, unit_capacity=self.unit_capacity) self.assertTrue(triangular_stack.pour(k_liter_water))