Skip to content

Commit 6f94053

Browse files
authored
Reduced number of tests from 192 to 82 via slicing. (#2615)
1 parent b795319 commit 6f94053

File tree

2 files changed

+32
-38
lines changed

2 files changed

+32
-38
lines changed

exercises/concept/cater-waiter/sets_test.py

Lines changed: 31 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@
1212

1313
from sets_categories_data import (VEGAN,
1414
VEGETARIAN,
15-
KETO, PALEO,
15+
KETO,
16+
PALEO,
1617
OMNIVORE,
1718
ALCOHOLS,
1819
SPECIAL_INGREDIENTS,
@@ -40,70 +41,63 @@ class SetsTest(unittest.TestCase):
4041

4142
@pytest.mark.task(taskno=1)
4243
def test_clean_ingredients(self):
43-
input_data = recipes_with_duplicates
44-
result_data = recipes_without_duplicates
45-
number_of_variants = range(1, len(input_data) + 1)
44+
test_data = zip(recipes_with_duplicates[::3], recipes_without_duplicates[::3])
4645

47-
for variant, item, result in zip(number_of_variants, input_data, result_data):
48-
with self.subTest(f"variation #{variant}", item=item, result=result):
49-
self.assertEqual(clean_ingredients(item[0], item[1]), (result[1], result[2]))
46+
for variant, (item, result) in enumerate(test_data, start=1):
47+
with self.subTest(f"variation #{variant}", item=item[0], result=result[1]):
48+
error_msg = f"Expected a cleaned ingredient list for {item[0]}, but the ingredients aren't cleaned as expected."
49+
self.assertEqual(clean_ingredients(item[0], item[1]), (result[1], result[2]), msg=error_msg)
5050

5151
@pytest.mark.task(taskno=2)
5252
def test_check_drinks(self):
53-
input_data = all_drinks
54-
result_data = drink_names
55-
number_of_variants = range(1, len(input_data) + 1)
53+
test_data = zip(all_drinks[::2], drink_names[::2])
5654

57-
for variant, item, result in zip(number_of_variants, input_data, result_data):
55+
for variant, (item, result) in enumerate(test_data, start=1):
5856
with self.subTest(f"variation #{variant}", item=item, result=result):
59-
self.assertEqual(check_drinks(item[0], item[1]), (result))
57+
error_msg = f"Expected {result} for {item}, but got something else instead."
58+
self.assertEqual(check_drinks(item[0], item[1]), (result), msg=error_msg)
6059

6160
@pytest.mark.task(taskno=3)
6261
def test_categorize_dish(self):
63-
input_data = sorted(recipes_without_duplicates, reverse=True)
64-
result_data = dishes_categorized
65-
number_of_variants = range(1, len(input_data) + 1)
62+
test_data = zip(sorted(recipes_without_duplicates, reverse=True)[::3], dishes_categorized[::3])
6663

67-
for variant, item, result in zip(number_of_variants, input_data, result_data):
64+
for variant, (item, result) in enumerate(test_data, start=1):
6865
with self.subTest(f"variation #{variant}", item=item, result=result):
69-
self.assertEqual(categorize_dish(item[1], item[2]), (result))
66+
error_message = f"Exptected category {result} for {item[0]}, but got a different category instead."
67+
self.assertEqual(categorize_dish(item[1], item[2]), (result), msg=error_message)
7068

7169
@pytest.mark.task(taskno=4)
7270
def test_tag_special_ingredients(self):
73-
input_data = dishes_to_special_label
74-
result_data = dishes_labeled
75-
number_of_variants = range(1, len(input_data) + 1)
71+
test_data = zip(dishes_to_special_label[::3], dishes_labeled[::3])
7672

77-
for variant, item, result in zip(number_of_variants, input_data, result_data):
73+
for variant, (item, result) in enumerate(test_data, start=1):
7874
with self.subTest(f"variation #{variant}", item=item, result=result):
79-
self.assertEqual(tag_special_ingredients(item), (result))
75+
error_message = f"Expected {result} for {item}, but got something else instead."
76+
self.assertEqual(tag_special_ingredients(item), (result), msg=error_message)
8077

8178
@pytest.mark.task(taskno=5)
8279
def test_compile_ingredients(self):
83-
input_data = ingredients_only
84-
result_data = [VEGAN, VEGETARIAN, PALEO, KETO, OMNIVORE]
85-
number_of_variants = number_of_variants = range(1, len(input_data) + 1)
80+
test_data = zip(ingredients_only, [VEGAN, VEGETARIAN, PALEO, KETO, OMNIVORE])
8681

87-
for variant, item, result in zip(number_of_variants, input_data, result_data):
82+
for variant, (item, result) in enumerate(test_data, start=1):
8883
with self.subTest(f"variation #{variant}", item=item, result=result):
89-
self.assertEqual(compile_ingredients(item), (result))
84+
error_message = "Expected a proper set of combined ingredients, but something went wrong."
85+
self.assertEqual(compile_ingredients(item), (result), msg=error_message)
9086

9187
@pytest.mark.task(taskno=6)
9288
def test_separate_appetizers(self):
93-
input_data = dishes_and_appetizers
94-
result_data = dishes_cleaned
95-
number_of_variants = number_of_variants = range(1, len(input_data) + 1)
89+
test_data = zip(dishes_and_appetizers, dishes_cleaned)
9690

97-
for variant, item, result in zip(number_of_variants, input_data, result_data):
91+
for variant, (item, result) in enumerate(test_data, start=1):
9892
with self.subTest(f"variation #{variant}", item=item, result=result):
99-
self.assertEqual(sorted(separate_appetizers(item[0], item[1])), (sorted(result)))
93+
error_message = "Expected only appetizers returned, but some dishes remain in the group."
94+
self.assertEqual(sorted(separate_appetizers(item[0], item[1])), (sorted(result)), msg=error_message)
10095

10196
@pytest.mark.task(taskno=7)
10297
def test_singleton_ingredients(self):
103-
input_data = dishes_and_overlap
104-
result_data = singletons
105-
number_of_variants = number_of_variants = range(1, len(input_data) + 1)
98+
test_data = zip(dishes_and_overlap, singletons)
10699

107-
for variant, item, result in zip(number_of_variants, input_data, result_data):
100+
for variant, (item, result) in enumerate(test_data, start=1):
108101
with self.subTest(f"variation #{variant}", item=item, result=result):
109-
self.assertEqual(singleton_ingredients(item[0], item[1]), (result))
102+
error_message = "Expected only ingredients that belong to exactly one dish, but got multi-dish ingredients instead."
103+
self.assertEqual(singleton_ingredients(item[0], item[1]), (result), msg=error_message)

exercises/concept/cater-waiter/sets_test_data.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -447,7 +447,7 @@
447447
KETO_INTERSECTIONS, OMNIVORE_INTERSECTIONS)
448448

449449
dishes_and_overlap = [(item[0], item[1]) for item in zip(ingredients_only, intersections)]
450-
ingredients = (set.union(*group) for group in ingredients_only)
450+
ingredients = (set.union(*group) for group in ingredients_only)
451451
singletons = (item[0] ^ item[1] for item in zip(ingredients, intersections))
452452

453453
backup_singletons = [{'black-eyed peas', 'coriander', 'cashews', 'yellow split peas', 'pomegranate seeds', 'cumin', 'mangoes', 'pomegranate concentrate', 'red chili powder', 'slivered almonds', 'black peppercorn', 'cornstarch', 'smoked tofu', 'curry leaves', 'zucchini', 'currants', 'dried cranberries', 'yukon gold potato', 'tofu', 'yeast', 'fresh basil', 'hot water', 'ripe plantains', 'calabash nutmeg', 'green beans', 'kosher salt', 'grains of selim', 'vegetarian worcestershire sauce', 'cumin seeds', 'figs', 'ground turmeric', 'white rice', 'harissa', 'garlic powder', 'scallions', 'barberries', 'walnuts', 'basmati rice', 'saffron powder', 'butternut squash', 'thyme', 'tomato', 'chopped parsley', 'hing', 'coriander seeds', 'turmeric powder', 'eggplants', 'sesame oil', "za'atar", 'pareve puff pastry', 'firm tofu', 'yellow onions', 'coriander powder', 'parsley', 'garlic paste', 'rice vinegar', 'sorghum stems', 'spring onions', 'raisins', 'chinese eggplants', 'garam masala', 'ground almonds', 'baking soda', 'clove powder', 'allspice powder', 'parev shortcrust pastry', 'dill', 'nigella seeds', 'dried blueberries', 'cardamom powder', 'cilantro', 'serrano chili', 'breadcrumbs', 'mango powder', 'dried cherries', 'oregano', 'fresh red chili', 'pecans', 'chives', 'spaghetti', 'mixed herbs', 'brandy', 'cumin powder', 'silken tofu', 'yellow onion', 'balsamic vinegar', 'persian cucumber', 'red bell pepper', 'peanuts', 'siracha', 'red pepper flakes', 'spring onion', 'vegan unsweetened yoghurt', 'corn', 'khmeli suneli', 'barley malt', 'green onions', 'apples', 'corn flour', 'honey', 'celeriac', 'bulgur', 'sesame seeds', 'mashed potatoes', 'chili flakes', 'vegetable oil'},

0 commit comments

Comments
 (0)