From 30f53c8c667ce03499ba486c2b1674fea52858ea Mon Sep 17 00:00:00 2001 From: jae Date: Wed, 6 Apr 2022 22:31:57 -0500 Subject: [PATCH 1/3] not refactored, but solved --- main.py | 78 +++++++++++++++++++ swap_meet/clothing.py | 16 +++- swap_meet/decor.py | 13 +++- swap_meet/electronics.py | 13 +++- swap_meet/item.py | 50 +++++++++++- swap_meet/vendor.py | 78 ++++++++++++++++++- tests/integration_tests/test_wave_01_02_03.py | 2 +- tests/integration_tests/test_wave_04_05_06.py | 2 +- tests/unit_tests/test_wave_01.py | 18 +++-- tests/unit_tests/test_wave_02.py | 18 ++++- tests/unit_tests/test_wave_03.py | 12 +-- tests/unit_tests/test_wave_04.py | 6 +- tests/unit_tests/test_wave_05.py | 10 +-- tests/unit_tests/test_wave_06.py | 35 +++++---- 14 files changed, 304 insertions(+), 47 deletions(-) create mode 100644 main.py diff --git a/main.py b/main.py new file mode 100644 index 000000000..133f6bb61 --- /dev/null +++ b/main.py @@ -0,0 +1,78 @@ +from swap_meet.item import Item +from swap_meet.vendor import Vendor +from swap_meet.clothing import Clothing +from swap_meet.decor import Decor +from swap_meet.electronics import Electronics + +''' +example_item = Item() +trenisha = Vendor() + +print(vars(trenisha)) +## will print out the attributes of Trenisha into a dictionary (attribute:"value") + +trenisha.get_by_category() +## if that is an instance of vendor (), will show return value of that method + + +print(trenisha.get_by_category()) +## will print the return statement from that method +# (return & print statement from that method call) + + +print(dir(trenisha)) +# will print out directory of all of the possible default +# attributes / methods for class (__init__, __str__ etc) + + + + + +# example_item = Item("Electronics", 4) +# print(vars(example_item)) +# print(example_item.condition) + +# item_a = Clothing(condition=2.0) +# item_b = Decor(condition=2.0) +# item_c = Clothing(condition=4.0) +# item_d = Decor(condition=5.0) +# item_e = Clothing(condition=3.0) + + +# trenisha = Vendor(inventory = [item_a, item_b, item_c] ) + + +# print(vars(trenisha.inventory)) +''' + + +item_a = Clothing(condition=2.0) +item_b = Decor(condition=2.0) +item_c = Clothing(condition=4.0) +item_d = Decor(condition=5.0) +item_e = Clothing(condition=3.0) +tai = Vendor( + inventory=[item_a, item_b, item_c, item_d, item_e] + ) + +print(vars(tai.inventory)) + +# print(item_a.condition) +# print(tai.inventory) + + +# def get_best(self, category = ''): +# scores = [] +# for item in self.inventory: +# if item.category == category: +# scores.append(item.condition) + +# print(scores) + +# print(tai, "Clothing") + + + + + + diff --git a/swap_meet/clothing.py b/swap_meet/clothing.py index b8afdeb1e..4ae92b9fa 100644 --- a/swap_meet/clothing.py +++ b/swap_meet/clothing.py @@ -1,2 +1,14 @@ -class Clothing: - pass \ No newline at end of file +from swap_meet.item import Item +class Clothing(Item): + def __init__(self,condition=0.0): + super().__init__(category= '', condition=condition) + self.category = "Clothing" + # self.condition = 0.0 + + + def __str__(self): + return "The finest clothing you could wear." + + + + diff --git a/swap_meet/decor.py b/swap_meet/decor.py index eab7a9dbe..16b0505fa 100644 --- a/swap_meet/decor.py +++ b/swap_meet/decor.py @@ -1,2 +1,11 @@ -class Decor: - pass \ No newline at end of file +from swap_meet.item import Item + +class Decor(Item): + def __init__(self, condition=0.0): + super().__init__(category= '', condition=condition) + self.category = "Decor" + # self.condition = condition + + + def __str__(self): + return "Something to decorate your space." \ No newline at end of file diff --git a/swap_meet/electronics.py b/swap_meet/electronics.py index 2f9dff68a..071d576e5 100644 --- a/swap_meet/electronics.py +++ b/swap_meet/electronics.py @@ -1,2 +1,11 @@ -class Electronics: - pass +from swap_meet.item import Item + +class Electronics(Item): + def __init__(self, condition=0.0): + super().__init__( condition=condition) + self.category = "Electronics" + + + + def __str__(self): + return "A gadget full of buttons and secrets." \ No newline at end of file diff --git a/swap_meet/item.py b/swap_meet/item.py index 560d759c2..c95858843 100644 --- a/swap_meet/item.py +++ b/swap_meet/item.py @@ -1,2 +1,50 @@ +# from .clothing import Clothing +# from .decor import Decor +# from .electronics import Electronics + class Item: - pass \ No newline at end of file + def __init__(self, category = '', condition=0.0): + self.category = category + self.condition = condition + + + def __str__(self): + return "Hello World!" + + def condition_description(self): + if self.condition <= 0: + return "disgusting" + if self.condition <= 1: + return "needs a wash" + if self.condition <= 2: + return "passable" + if self.condition <= 3: + return "a bargain" + if self.condition <= 4: + return "gross" + if self.condition <= 5: + return "mint!" + + + ''' + All three classes and the Item class have an instance method + named condition_description, which should describe the condition + in words based on the value, assuming they all range from 0 to 5. + These can be basic descriptions (eg. 'mint', 'heavily used') but + feel free to have fun with these + (e.g. 'You probably want a glove for this one..."). + The one requirement is that the condition_description for + all three classes above have the same behavior. + ''' + + + + + + + + + + + + diff --git a/swap_meet/vendor.py b/swap_meet/vendor.py index 87302c056..4b56d74cf 100644 --- a/swap_meet/vendor.py +++ b/swap_meet/vendor.py @@ -1,2 +1,78 @@ +from swap_meet.item import Item + + class Vendor: - pass \ No newline at end of file + def __init__(self, inventory=None): + self.inventory = inventory if inventory is not None else [] + + + def add(self, item): + self.inventory.append(item) + return item + def remove(self, item): + if item not in self.inventory: + return False + self.inventory.remove(item) + return item + + def get_by_category(self, category = ''): + category_list = [] + + for item in self.inventory: + if item.category == category: + category_list.append(item) + return category_list + + def swap_items(self, vendor, my_item, their_item): + if my_item not in self.inventory or their_item not in vendor.inventory: + return False + + + vendor.inventory.append(my_item) + self.inventory.remove(my_item) + self.inventory.append(their_item) + vendor.inventory.remove(their_item) + return True + + def swap_first_item(self, vendor): + if self.inventory == [] or vendor.inventory == []: + return False + + first_self = self.inventory[0] + first_vendor = vendor.inventory[0] + + self.inventory.pop(0) + vendor.inventory.pop(0) + self.inventory.append(first_vendor) + vendor.inventory.append(first_self) + return True + + + def get_best_by_category(self, category = ''): + if self.inventory == []: + return None + + category_score = [] + item_list = self.get_by_category(category) + if len(item_list) == 0: + return None + for item in item_list: + category_score.append(item.condition) + + best_score = max(category_score) + + for item in item_list: + if item.condition == best_score: + return item + + + + + + def swap_best_by_category(self, other, my_priority, their_priority): + my_item = self.get_best_by_category(their_priority) + their_item = other.get_best_by_category(my_priority) + result = self.swap_items(other, my_item, their_item) + + return result + diff --git a/tests/integration_tests/test_wave_01_02_03.py b/tests/integration_tests/test_wave_01_02_03.py index 9912414da..25707d998 100644 --- a/tests/integration_tests/test_wave_01_02_03.py +++ b/tests/integration_tests/test_wave_01_02_03.py @@ -2,7 +2,7 @@ from swap_meet.vendor import Vendor from swap_meet.item import Item -@pytest.mark.skip +# @pytest.mark.skip @pytest.mark.integration_test def test_integration_wave_01_02_03(): # make a vendor diff --git a/tests/integration_tests/test_wave_04_05_06.py b/tests/integration_tests/test_wave_04_05_06.py index 4d0be9909..91b1362b6 100644 --- a/tests/integration_tests/test_wave_04_05_06.py +++ b/tests/integration_tests/test_wave_04_05_06.py @@ -4,7 +4,7 @@ from swap_meet.decor import Decor from swap_meet.electronics import Electronics -@pytest.mark.skip +# @pytest.mark.skip @pytest.mark.integration_test def test_integration_wave_04_05_06(): camila = Vendor() diff --git a/tests/unit_tests/test_wave_01.py b/tests/unit_tests/test_wave_01.py index 58478ccf9..2bf0f240a 100644 --- a/tests/unit_tests/test_wave_01.py +++ b/tests/unit_tests/test_wave_01.py @@ -2,12 +2,12 @@ import pytest from swap_meet.vendor import Vendor -@pytest.mark.skip +# @pytest.mark.skip def test_vendor_has_inventory(): vendor = Vendor() assert len(vendor.inventory) == 0 -@pytest.mark.skip +# @pytest.mark.skip def test_vendor_takes_optional_inventory(): inventory = ["a", "b", "c"] vendor = Vendor(inventory=inventory) @@ -16,7 +16,7 @@ def test_vendor_takes_optional_inventory(): assert "b" in vendor.inventory assert "c" in vendor.inventory -@pytest.mark.skip +# @pytest.mark.skip def test_adding_to_inventory(): vendor = Vendor() item = "new item" @@ -27,7 +27,7 @@ def test_adding_to_inventory(): assert item in vendor.inventory assert result == item -@pytest.mark.skip +# @pytest.mark.skip def test_removing_from_inventory_returns_item(): item = "item to remove" vendor = Vendor( @@ -40,7 +40,7 @@ def test_removing_from_inventory_returns_item(): assert item not in vendor.inventory assert result == item -@pytest.mark.skip +# @pytest.mark.skip def test_removing_not_found_is_false(): item = "item to remove" vendor = Vendor( @@ -49,7 +49,13 @@ def test_removing_not_found_is_false(): result = vendor.remove(item) - raise Exception("Complete this test according to comments below.") + + + # with pytest.raises(TypeError): + assert result == False + + # raise Exception('TypeError') + # assert result == False # ********************************************************************* # ****** Complete Assert Portion of this test ********** # ********************************************************************* diff --git a/tests/unit_tests/test_wave_02.py b/tests/unit_tests/test_wave_02.py index 3d7060d7c..817c975f4 100644 --- a/tests/unit_tests/test_wave_02.py +++ b/tests/unit_tests/test_wave_02.py @@ -2,12 +2,12 @@ from swap_meet.vendor import Vendor from swap_meet.item import Item -@pytest.mark.skip +# @pytest.mark.skip def test_items_have_blank_default_category(): item = Item() assert item.category == "" -@pytest.mark.skip +# @pytest.mark.skip def test_get_items_by_category(): item_a = Item(category="clothing") item_b = Item(category="electronics") @@ -23,7 +23,7 @@ def test_get_items_by_category(): assert item_c in items assert item_b not in items -@pytest.mark.skip +# @pytest.mark.skip def test_get_no_matching_items_by_category(): item_a = Item(category="clothing") item_b = Item(category="clothing") @@ -33,8 +33,18 @@ def test_get_no_matching_items_by_category(): ) items = vendor.get_by_category("electronics") + + # assert len(items) == 0 + # assert item_a in items + # assert item_c in items + # assert item_b not in items - raise Exception("Complete this test according to comments below.") + assert len(items) == 0 + assert item_a != Item(category="clothing") + assert item_b != Item(category="clothing") + assert item_c != Item(category="clothing") + + # ********************************************************************* # ****** Complete Assert Portion of this test ********** # ********************************************************************* diff --git a/tests/unit_tests/test_wave_03.py b/tests/unit_tests/test_wave_03.py index 0300b638f..2d573fa52 100644 --- a/tests/unit_tests/test_wave_03.py +++ b/tests/unit_tests/test_wave_03.py @@ -2,7 +2,7 @@ from swap_meet.vendor import Vendor from swap_meet.item import Item -@pytest.mark.skip +# @pytest.mark.skip def test_item_overrides_to_string(): item = Item() @@ -10,7 +10,7 @@ def test_item_overrides_to_string(): assert stringified_item == "Hello World!" -@pytest.mark.skip +# @pytest.mark.skip def test_swap_items_returns_true(): item_a = Item(category="clothing") item_b = Item(category="clothing") @@ -38,7 +38,7 @@ def test_swap_items_returns_true(): assert item_b in jolie.inventory assert result -@pytest.mark.skip +# @pytest.mark.skip def test_swap_items_when_my_item_is_missing_returns_false(): item_a = Item(category="clothing") item_b = Item(category="clothing") @@ -65,7 +65,7 @@ def test_swap_items_when_my_item_is_missing_returns_false(): assert item_e in jolie.inventory assert not result -@pytest.mark.skip +# @pytest.mark.skip def test_swap_items_when_their_item_is_missing_returns_false(): item_a = Item(category="clothing") item_b = Item(category="clothing") @@ -92,7 +92,7 @@ def test_swap_items_when_their_item_is_missing_returns_false(): assert item_e in jolie.inventory assert not result -@pytest.mark.skip +# @pytest.mark.skip def test_swap_items_from_my_empty_returns_false(): fatimah = Vendor( inventory=[] @@ -112,7 +112,7 @@ def test_swap_items_from_my_empty_returns_false(): assert len(jolie.inventory) == 2 assert not result -@pytest.mark.skip +# @pytest.mark.skip def test_swap_items_from_their_empty_returns_false(): item_a = Item(category="clothing") item_b = Item(category="clothing") diff --git a/tests/unit_tests/test_wave_04.py b/tests/unit_tests/test_wave_04.py index 8190a4ebb..4ef21ff8e 100644 --- a/tests/unit_tests/test_wave_04.py +++ b/tests/unit_tests/test_wave_04.py @@ -2,7 +2,7 @@ from swap_meet.vendor import Vendor from swap_meet.item import Item -@pytest.mark.skip +# @pytest.mark.skip def test_swap_first_item_returns_true(): item_a = Item(category="clothing") item_b = Item(category="clothing") @@ -30,7 +30,7 @@ def test_swap_first_item_returns_true(): assert item_a in jolie.inventory assert result -@pytest.mark.skip +# @pytest.mark.skip def test_swap_first_item_from_my_empty_returns_false(): fatimah = Vendor( inventory=[] @@ -48,7 +48,7 @@ def test_swap_first_item_from_my_empty_returns_false(): assert len(jolie.inventory) == 2 assert not result -@pytest.mark.skip +# @pytest.mark.skip def test_swap_first_item_from_their_empty_returns_false(): item_a = Item(category="clothing") item_b = Item(category="clothing") diff --git a/tests/unit_tests/test_wave_05.py b/tests/unit_tests/test_wave_05.py index 7abea06cd..fdeb063a9 100644 --- a/tests/unit_tests/test_wave_05.py +++ b/tests/unit_tests/test_wave_05.py @@ -3,25 +3,25 @@ from swap_meet.decor import Decor from swap_meet.electronics import Electronics -@pytest.mark.skip +# @pytest.mark.skip def test_clothing_has_default_category_and_to_str(): cloth = Clothing() assert cloth.category == "Clothing" assert str(cloth) == "The finest clothing you could wear." -@pytest.mark.skip +# @pytest.mark.skip def test_decor_has_default_category_and_to_str(): decor = Decor() assert decor.category == "Decor" assert str(decor) == "Something to decorate your space." -@pytest.mark.skip +# @pytest.mark.skip def test_electronics_has_default_category_and_to_str(): electronics = Electronics() assert electronics.category == "Electronics" assert str(electronics) == "A gadget full of buttons and secrets." -@pytest.mark.skip +# @pytest.mark.skip def test_items_have_condition_as_float(): items = [ Clothing(condition=3.5), @@ -31,7 +31,7 @@ def test_items_have_condition_as_float(): for item in items: assert item.condition == pytest.approx(3.5) -@pytest.mark.skip +# @pytest.mark.skip def test_items_have_condition_descriptions_that_are_the_same_regardless_of_type(): items = [ Clothing(condition=5), diff --git a/tests/unit_tests/test_wave_06.py b/tests/unit_tests/test_wave_06.py index 1f7065ab4..1d0e5a541 100644 --- a/tests/unit_tests/test_wave_06.py +++ b/tests/unit_tests/test_wave_06.py @@ -4,7 +4,7 @@ from swap_meet.decor import Decor from swap_meet.electronics import Electronics -@pytest.mark.skip +# @pytest.mark.skip def test_best_by_category(): item_a = Clothing(condition=2.0) item_b = Decor(condition=2.0) @@ -20,7 +20,7 @@ def test_best_by_category(): assert best_item.category == "Clothing" assert best_item.condition == pytest.approx(4.0) -@pytest.mark.skip +# @pytest.mark.skip def test_best_by_category_no_matches_is_none(): item_a = Decor(condition=2.0) item_b = Decor(condition=2.0) @@ -33,7 +33,7 @@ def test_best_by_category_no_matches_is_none(): assert best_item is None -@pytest.mark.skip +# @pytest.mark.skip def test_best_by_category_with_duplicates(): # Arrange item_a = Clothing(condition=2.0) @@ -50,7 +50,7 @@ def test_best_by_category_with_duplicates(): assert best_item.category == "Clothing" assert best_item.condition == pytest.approx(4.0) -@pytest.mark.skip +# @pytest.mark.skip def test_swap_best_by_category(): # Arrange # me @@ -76,7 +76,12 @@ def test_swap_best_by_category(): their_priority="Decor" ) - raise Exception("Complete this test according to comments below.") + assert len(jesse.inventory) == 3 + assert len(tai.inventory) == 3 + assert result == True + assert item_f in tai.inventory + assert item_c in jesse.inventory + # ********************************************************************* # ****** Complete Assert Portion of this test ********** # ********************************************************************* @@ -85,7 +90,7 @@ def test_swap_best_by_category(): # - That tai and jesse's inventories are the correct length # - That all the correct items are in tai and jesse's inventories, including the items which were swapped from one vendor to the other -@pytest.mark.skip +# @pytest.mark.skip def test_swap_best_by_category_reordered(): # Arrange item_a = Decor(condition=2.0) @@ -109,7 +114,11 @@ def test_swap_best_by_category_reordered(): their_priority="Decor" ) - raise Exception("Complete this test according to comments below.") + assert len(jesse.inventory) == 3 + assert len(tai.inventory) == 3 + assert result == True + assert item_f in tai.inventory + assert item_c in jesse.inventory # ********************************************************************* # ****** Complete Assert Portion of this test ********** # ********************************************************************* @@ -118,7 +127,7 @@ def test_swap_best_by_category_reordered(): # - That tai and jesse's inventories are the correct length # - That all the correct items are in tai and jesse's inventories, and that the items that were swapped are not there -@pytest.mark.skip +# @pytest.mark.skip def test_swap_best_by_category_no_inventory_is_false(): tai = Vendor( inventory=[] @@ -144,7 +153,7 @@ def test_swap_best_by_category_no_inventory_is_false(): assert item_b in jesse.inventory assert item_c in jesse.inventory -@pytest.mark.skip +# @pytest.mark.skip def test_swap_best_by_category_no_other_inventory_is_false(): item_a = Clothing(condition=2.0) item_b = Decor(condition=4.0) @@ -170,7 +179,7 @@ def test_swap_best_by_category_no_other_inventory_is_false(): assert item_b in tai.inventory assert item_c in tai.inventory -@pytest.mark.skip +# @pytest.mark.skip def test_swap_best_by_category_no_match_is_false(): # Arrange item_a = Decor(condition=2.0) @@ -194,7 +203,7 @@ def test_swap_best_by_category_no_match_is_false(): their_priority="Clothing" ) - raise Exception("Complete this test according to comments below.") + assert result == False # ********************************************************************* # ****** Complete Assert Portion of this test ********** # ********************************************************************* @@ -203,7 +212,7 @@ def test_swap_best_by_category_no_match_is_false(): # - That tai and jesse's inventories are the correct length # - That all the correct items are in tai and jesse's inventories -@pytest.mark.skip +# @pytest.mark.skip def test_swap_best_by_category_no_other_match_is_false(): # Arrange item_a = Decor(condition=2.0) @@ -227,7 +236,7 @@ def test_swap_best_by_category_no_other_match_is_false(): their_priority="Decor" ) - raise Exception("Complete this test according to comments below.") + assert result == False # ********************************************************************* # ****** Complete Assert Portion of this test ********** # ********************************************************************* From df61022e1907204db997a0f1633fbb45b51f355e Mon Sep 17 00:00:00 2001 From: jae Date: Fri, 8 Apr 2022 11:25:06 -0500 Subject: [PATCH 2/3] refactored for test 5 --- main.py | 65 -------------------------------- swap_meet/clothing.py | 6 +-- swap_meet/decor.py | 5 +-- swap_meet/electronics.py | 4 +- swap_meet/vendor.py | 64 +++++++++++++++++++------------ tests/unit_tests/test_wave_01.py | 6 +-- 6 files changed, 48 insertions(+), 102 deletions(-) diff --git a/main.py b/main.py index 133f6bb61..887e73710 100644 --- a/main.py +++ b/main.py @@ -4,72 +4,7 @@ from swap_meet.decor import Decor from swap_meet.electronics import Electronics -''' -example_item = Item() -trenisha = Vendor() -print(vars(trenisha)) -## will print out the attributes of Trenisha into a dictionary (attribute:"value") - -trenisha.get_by_category() -## if that is an instance of vendor (), will show return value of that method - - -print(trenisha.get_by_category()) -## will print the return statement from that method -# (return & print statement from that method call) - - -print(dir(trenisha)) -# will print out directory of all of the possible default -# attributes / methods for class (__init__, __str__ etc) - - - - - -# example_item = Item("Electronics", 4) -# print(vars(example_item)) -# print(example_item.condition) - -# item_a = Clothing(condition=2.0) -# item_b = Decor(condition=2.0) -# item_c = Clothing(condition=4.0) -# item_d = Decor(condition=5.0) -# item_e = Clothing(condition=3.0) - - -# trenisha = Vendor(inventory = [item_a, item_b, item_c] ) - - -# print(vars(trenisha.inventory)) -''' - - -item_a = Clothing(condition=2.0) -item_b = Decor(condition=2.0) -item_c = Clothing(condition=4.0) -item_d = Decor(condition=5.0) -item_e = Clothing(condition=3.0) -tai = Vendor( - inventory=[item_a, item_b, item_c, item_d, item_e] - ) - -print(vars(tai.inventory)) - -# print(item_a.condition) -# print(tai.inventory) - - -# def get_best(self, category = ''): -# scores = [] -# for item in self.inventory: -# if item.category == category: -# scores.append(item.condition) - -# print(scores) - -# print(tai, "Clothing") diff --git a/swap_meet/clothing.py b/swap_meet/clothing.py index 4ae92b9fa..05d29bd1e 100644 --- a/swap_meet/clothing.py +++ b/swap_meet/clothing.py @@ -1,9 +1,9 @@ from swap_meet.item import Item + class Clothing(Item): def __init__(self,condition=0.0): - super().__init__(category= '', condition=condition) - self.category = "Clothing" - # self.condition = 0.0 + super().__init__(category= 'Clothing', condition=condition) + def __str__(self): diff --git a/swap_meet/decor.py b/swap_meet/decor.py index 16b0505fa..a9915771c 100644 --- a/swap_meet/decor.py +++ b/swap_meet/decor.py @@ -2,9 +2,8 @@ class Decor(Item): def __init__(self, condition=0.0): - super().__init__(category= '', condition=condition) - self.category = "Decor" - # self.condition = condition + super().__init__(category= 'Decor', condition=condition) + def __str__(self): diff --git a/swap_meet/electronics.py b/swap_meet/electronics.py index 071d576e5..92414b492 100644 --- a/swap_meet/electronics.py +++ b/swap_meet/electronics.py @@ -2,8 +2,8 @@ class Electronics(Item): def __init__(self, condition=0.0): - super().__init__( condition=condition) - self.category = "Electronics" + super().__init__(category = "Electronics", condition=condition) + diff --git a/swap_meet/vendor.py b/swap_meet/vendor.py index 4b56d74cf..c9160f11c 100644 --- a/swap_meet/vendor.py +++ b/swap_meet/vendor.py @@ -1,19 +1,36 @@ from swap_meet.item import Item - class Vendor: def __init__(self, inventory=None): self.inventory = inventory if inventory is not None else [] + @staticmethod + def check_if_in_inventory(inventory, item): + if item not in inventory: + return False + return True + + # pass in vendors as tuple, and items as tuple to iterate through them + # just have one static method + + @staticmethod + def combo_static_combo(vendor_1, vendor_2, item_1, item_2): + if Vendor.check_if_in_inventory(vendor_1.inventory, item_1) and Vendor.check_if_in_inventory(vendor_2.inventory, item_2): + return True + return False + def add(self, item): self.inventory.append(item) return item + + def remove(self, item): - if item not in self.inventory: - return False - self.inventory.remove(item) - return item + if Vendor.check_if_in_inventory(self.inventory, item): + self.inventory.remove(item) + return item + return False + def get_by_category(self, category = ''): category_list = [] @@ -24,15 +41,14 @@ def get_by_category(self, category = ''): return category_list def swap_items(self, vendor, my_item, their_item): - if my_item not in self.inventory or their_item not in vendor.inventory: - return False - + if Vendor.combo_static_combo(self, vendor, my_item, their_item): - vendor.inventory.append(my_item) - self.inventory.remove(my_item) - self.inventory.append(their_item) - vendor.inventory.remove(their_item) - return True + vendor.inventory.append(my_item) + self.inventory.remove(my_item) + self.inventory.append(their_item) + vendor.inventory.remove(their_item) + return True + return False def swap_first_item(self, vendor): if self.inventory == [] or vendor.inventory == []: @@ -41,10 +57,7 @@ def swap_first_item(self, vendor): first_self = self.inventory[0] first_vendor = vendor.inventory[0] - self.inventory.pop(0) - vendor.inventory.pop(0) - self.inventory.append(first_vendor) - vendor.inventory.append(first_self) + item_swap = self.swap_items(vendor, first_self, first_vendor) return True @@ -52,20 +65,23 @@ def get_best_by_category(self, category = ''): if self.inventory == []: return None - category_score = [] + item_list = self.get_by_category(category) if len(item_list) == 0: return None - for item in item_list: - category_score.append(item.condition) - best_score = max(category_score) - for item in item_list: - if item.condition == best_score: - return item + # item_dict = {} + # for item in item_list: + # item_dict[item] = item.condition + item_dict = dict.fromkeys{item_list, item.condition } + item_dict = {item.condition for (item, item.condition in item_list} + best_score = max(item_dict, key=item_dict.get) + return(best_score) + + diff --git a/tests/unit_tests/test_wave_01.py b/tests/unit_tests/test_wave_01.py index 2bf0f240a..c07cbbd5d 100644 --- a/tests/unit_tests/test_wave_01.py +++ b/tests/unit_tests/test_wave_01.py @@ -54,8 +54,4 @@ def test_removing_not_found_is_false(): # with pytest.raises(TypeError): assert result == False - # raise Exception('TypeError') - # assert result == False - # ********************************************************************* - # ****** Complete Assert Portion of this test ********** - # ********************************************************************* + \ No newline at end of file From b4e2b35e8e3422f341f12bb1f96369f8bd4a2421 Mon Sep 17 00:00:00 2001 From: jae Date: Fri, 8 Apr 2022 11:30:25 -0500 Subject: [PATCH 3/3] fix wave 6 --- swap_meet/vendor.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/swap_meet/vendor.py b/swap_meet/vendor.py index c9160f11c..fed0045b4 100644 --- a/swap_meet/vendor.py +++ b/swap_meet/vendor.py @@ -71,12 +71,12 @@ def get_best_by_category(self, category = ''): return None - # item_dict = {} - # for item in item_list: - # item_dict[item] = item.condition + item_dict = {} + for item in item_list: + item_dict[item] = item.condition - item_dict = dict.fromkeys{item_list, item.condition } - item_dict = {item.condition for (item, item.condition in item_list} + # item_dict = dict.fromkeys{item_list, item.condition } + # item_dict = {item.condition for (item, item.condition in item_list} best_score = max(item_dict, key=item_dict.get) return(best_score)