def test_with_capacity_as_1_and_duplicate_weights(self): capacity = 1 weights = [1, 1] values = [2, 3] value, items = optimal_value(capacity, weights, values) self.assertEqual(3, value) self.assertEqual([1], items) self.assert_items_within_capacity(capacity, weights, values, value, items)
def test_with_non_zero_capacity_and_empty_items(self): capacity = 123 weights = [] values = [] value, items = optimal_value(capacity, weights, values) self.assertEqual(0, value) self.assertEqual([], items) self.assert_items_within_capacity(capacity, weights, values, value, items)
def test_with_capacity_as_1_and_weights_as_1(self): capacity = 1 weights = [1] values = [2] value, items = optimal_value(capacity, weights, values) self.assertEqual(2, value) self.assertEqual([0], items) self.assert_items_within_capacity(capacity, weights, values, value, items)
def test_with_capacity_as_14_and_several_weights(self): capacity = 14 weights = [2, 4, 3, 6] values = [9, 16, 14, 30] value, items = optimal_value(capacity, weights, values) self.assertEqual(69, value) self.assertEqual([0, 3, 3], items) self.assert_items_within_capacity(capacity, weights, values, value, items)
def test_with_zero_capacity(self): capacity = 0 weights = [] values = [] value, items = optimal_value(capacity, weights, values) self.assertEqual(0, value) self.assertEqual([], items) self.assert_items_within_capacity(capacity, weights, values, value, items)
def test_with_capacity_as_10_and_several_weights_with_duplicates(self): capacity = 10 weights = [2, 4, 3, 6, 2, 4, 3, 6] values = [9, 16, 14, 30, 9, 16, 14, 30] value, items = optimal_value(capacity, weights, values) self.assertEqual(48, value) self.assertEqual([0, 0, 3], items) self.assert_items_within_capacity(capacity, weights, values, value, items)
def test_with_capacity_as_2_and_weights_as_1_and_2(self): capacity = 2 weights = [1, 2] values = [2, 3] value, items = optimal_value(capacity, weights, values) self.assertEqual(4, value) self.assertEqual([0, 0], items) self.assert_items_within_capacity(capacity, weights, values, value, items)
def test_with_capacity_as_1_and_weights_as_2_and_3(self): capacity = 1 weights = [2, 3] values = [4, 5] value, items = optimal_value(capacity, weights, values) self.assertEqual(0, value) self.assertEqual([], items) self.assert_items_within_capacity(capacity, weights, values, value, items)
def test_with_preceeding_lower_bound_of_values(self): with self.assertRaisesRegex(AssertionError, ''): capacity = 1 weights = [1, 2, 3] values = [1, -1, 2] optimal_value(capacity, weights, values)
def test_with_more_weights_than_values(self): with self.assertRaisesRegex(AssertionError, ''): capacity = 1 weights = [1, 2] values = [3] optimal_value(capacity, weights, values)