From 4d3bec4670e2e3fdbc908bb34ea470f5a51b758a Mon Sep 17 00:00:00 2001 From: brodriguez8774 <brodriguez8774@gmail.com> Date: Thu, 26 Sep 2019 19:29:44 -0400 Subject: [PATCH] Create "clear item set/weight" functions --- resources/knapsack.py | 18 ++++++++++++++++-- tests/resources/knapsack.py | 25 +++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/resources/knapsack.py b/resources/knapsack.py index 123b231..857132c 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 6455b70..08fc61a 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_) -- GitLab