diff --git a/resources/knapsack.py b/resources/knapsack.py index 123b23192c8b92bffc3f85e4ca5e48484750510d..857132cac8779af8972ab189da24c6ec2dfa6ddf 100644 --- a/resources/knapsack.py +++ b/resources/knapsack.py @@ -25,8 +25,8 @@ class FractionalKnapsackAlgorithm(): Knapsack algorithm. """ def __init__(self): - self._item_set_ = None - self._max_weight_ = None + self._item_set_ = [] + self._max_weight_ = 0 self._items_populated_ = False self._weight_populated_ = False @@ -70,6 +70,20 @@ class FractionalKnapsackAlgorithm(): self._max_weight_ = max_weight self._weight_populated_ = True + def clear_item_set(self): + """ + Resets item set to empty. + """ + self._item_set_ = [] + self._items_populated_ = False + + def clear_max_weight(self): + """ + Resets max weight to 0. + """ + self._max_weight_ = 0 + self._weight_populated_ = False + def display_item_set(self): """ Prints current item set with logging. diff --git a/tests/resources/knapsack.py b/tests/resources/knapsack.py index 6455b70b4314344a1d6d9809e891e3fdd329bc5f..08fc61a9ed6ed9110a36fa00a083cc36fd9f4b9e 100644 --- a/tests/resources/knapsack.py +++ b/tests/resources/knapsack.py @@ -59,10 +59,21 @@ class TestKnapsack(unittest.TestCase): def test_knapsack_creation(self): self.assertTrue(isinstance(self.knapsack, FractionalKnapsackAlgorithm)) + self.assertEqual(self.knapsack._item_set_, []) + self.assertEqual(self.knapsack._max_weight_, 0) + self.assertFalse(self.knapsack._items_populated_) + self.assertFalse(self.knapsack._weight_populated_) def test_set_item_set_success(self): + # Test with set 1. self.knapsack.set_item_set(self.item_set_1) self.assertEqual(self.knapsack._item_set_, self.item_set_1) + self.assertTrue(self.knapsack._items_populated_) + + # Test with set 2. + self.knapsack.set_item_set(self.item_set_2) + self.assertEqual(self.knapsack._item_set_, self.item_set_2) + self.assertTrue(self.knapsack._items_populated_) def test_set_item_set_failure(self): with self.subTest('Arg is not array of dicts'): @@ -82,9 +93,11 @@ class TestKnapsack(unittest.TestCase): def test_set_max_weight_success(self): self.knapsack.set_max_weight(1) self.assertEqual(self.knapsack._max_weight_, 1) + self.assertTrue(self.knapsack._weight_populated_) self.knapsack.set_max_weight(2) self.assertEqual(self.knapsack._max_weight_, 2) + self.assertTrue(self.knapsack._weight_populated_) def test_set_max_weight_failure(self): with self.subTest('Arg is not of type Int'): @@ -120,3 +133,15 @@ class TestKnapsack(unittest.TestCase): def test_calculate_fractional_knapsack_failure(self): with self.assertRaises(ValueError): self.knapsack.calculate_fractional_knapsack() + + def test_clear_item_set(self): + pass + + def test_clear_max_weight(self): + self.knapsack.set_max_weight(10) + self.assertEqual(self.knapsack._max_weight_, 10) + self.assertTrue(self.knapsack._weight_populated_) + + self.knapsack.clear_max_weight() + self.assertEqual(self.knapsack._max_weight_, 0) + self.assertFalse(self.knapsack._weight_populated_)