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)