From fb69b4a1c453e76f1334a0914d37f44d093520f2 Mon Sep 17 00:00:00 2001 From: Gabor Berta Date: Thu, 18 May 2023 22:37:35 +0200 Subject: [PATCH 1/7] readme.md: updated --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 60b0584..c67af9f 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,7 @@ | | <10 | B | | | between 10-50 | C | | >50 | >50 | D | +| sum over 50 -> bigger group || D | ## The goal is - Tested this program From d18915200ae06cfe1f61d6d01264f1f6ace9e122 Mon Sep 17 00:00:00 2001 From: Gabor Berta Date: Thu, 18 May 2023 22:45:04 +0200 Subject: [PATCH 2/7] readme.md: Updated with new sum over 50 requirement --- README.md | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index c67af9f..a62da7e 100644 --- a/README.md +++ b/README.md @@ -6,19 +6,20 @@ - If the number of registered students is between 10 and 50 in the Engineering Faculty, the course will be held in building B. - For the Art and Science Faculty, if the number of registered students is less than 10, the course will be held in building B. - If the number of registered students is between 10 and 50, the course will be held in building C. - - If the number of registered students is greater than 50 for both faculties, the course will be held in building D. + - If the number of registered students is greater than 50 for both faculties, the course will be held in building D. + - If the sum of the students are over 50 then the bigger group has to move to building D. ### The same in a table -| enginner_students | art_science_students | Building result | -|-------------------|----------------------|-----------------| -| <10 | | A | -| between 10-50 | | B | -| | <10 | B | -| | between 10-50 | C | -| >50 | >50 | D | -| sum over 50 -> bigger group || D | +| engineer_students | art_science_students | Building result | +|-------------------|----------------------|-------------------------------| +| <10 | | engineer: A | +| between 10-50 | | engineer: B | +| | <10 | art_science: B | +| | between 10-50 | art_science: C | +| >50 | >50 | both: D | +| x | y | x+y>50 -> bigger group: D | ## The goal is -- Tested this program -- Created bugs for this implementations that are difficult to see - - *bad functions +- Test this program +- Create bugs for this implementations that are difficult to see + - Implemented these in *bad functions - Minimize tests which can detect these bugs \ No newline at end of file From d80c1f9f6c03cdf47614a3e084768e1c8d14c535 Mon Sep 17 00:00:00 2001 From: Gabor Berta Date: Thu, 18 May 2023 23:23:29 +0200 Subject: [PATCH 3/7] allocation.py: changed allocate_1 function for sum over 50 --- allocation.py | 40 ++++++++++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/allocation.py b/allocation.py index 4dd3240..58cddfc 100644 --- a/allocation.py +++ b/allocation.py @@ -32,20 +32,32 @@ def get_art_and_science_students_number(default_value): def allocate_1(engineering_students, art_science_students): engineer_course = Building.Default art_science_course = Building.Default - - if engineering_students < 10: - engineer_course = Building.A - elif 10 <= engineering_students <= 50: - engineer_course = Building.B - elif engineering_students > 50: - engineer_course = Building.D - - if art_science_students < 10: - art_science_course = Building.B - elif 10 <= art_science_students <= 50: - art_science_course = Building.C - elif art_science_students > 50: - art_science_course = Building.D + selected_engineer = False + selected_art_science = False + + if engineering_students + art_science_students > 50: + if engineering_students > art_science_students: + engineer_course = Building.D + selected_engineer = True + if engineering_students < art_science_students: + art_science_course = Building.D + selected_art_science = True + + if selected_engineer == False: + if engineering_students < 10: + engineer_course = Building.A + elif 10 <= engineering_students <= 50: + engineer_course = Building.B + elif engineering_students > 50: + engineer_course = Building.D + + if selected_art_science == False: + if art_science_students < 10: + art_science_course = Building.B + elif 10 <= art_science_students <= 50: + art_science_course = Building.C + elif art_science_students > 50: + art_science_course = Building.D return (engineer_course, art_science_course) From 3cf764d6bad5434d8cbf2586e0fd117aa9a3bb10 Mon Sep 17 00:00:00 2001 From: Gabor Berta Date: Thu, 18 May 2023 23:24:41 +0200 Subject: [PATCH 4/7] tes.py: created tests for allocation_1 sum over 50 case --- test.py | 41 ++++++++++++++++++++++++++++------------- 1 file changed, 28 insertions(+), 13 deletions(-) diff --git a/test.py b/test.py index 775d511..7ce9972 100644 --- a/test.py +++ b/test.py @@ -17,15 +17,15 @@ def test_less_than_10_engineering_and_art_science(self): self.assertEqual(allocate_4(8, 2), (Building.A, Building.B)) self.assertEqual(allocate_4_bad(8, 2), (Building.A, Building.B)) - def test_between_10_and_50_engineering_and_art_science(self): - self.assertEqual(allocate_1(20, 35), (Building.B, Building.C)) - self.assertEqual(allocate_1_bad(20, 35), (Building.B, Building.C)) - self.assertEqual(allocate_2(20, 35), (Building.B, Building.C)) - self.assertEqual(allocate_2_bad(20, 35), (Building.B, Building.C)) - self.assertEqual(allocate_3(20, 35), (Building.B, Building.C)) - self.assertEqual(allocate_3_bad(20, 35), (Building.B, Building.C)) - self.assertEqual(allocate_4(20, 35), (Building.B, Building.C)) - self.assertEqual(allocate_4_bad(20, 35), (Building.B, Building.C)) # fails + def test_between_10_and_50_engineering_and_art_science_and_sum_less_50(self): + self.assertEqual(allocate_1(20, 25), (Building.B, Building.C)) + self.assertEqual(allocate_1_bad(20, 25), (Building.B, Building.C)) + self.assertEqual(allocate_2(20, 25), (Building.B, Building.C)) + self.assertEqual(allocate_2_bad(20, 25), (Building.B, Building.C)) + self.assertEqual(allocate_3(20, 25), (Building.B, Building.C)) + self.assertEqual(allocate_3_bad(20, 25), (Building.B, Building.C)) + self.assertEqual(allocate_4(20, 25), (Building.B, Building.C)) + # self.assertEqual(allocate_4_bad(20, 25), (Building.B, Building.C)) # fails def test_more_than_50_engineering_and_art_science(self): self.assertEqual(allocate_1(60, 75), (Building.D, Building.D)) @@ -41,7 +41,7 @@ def test_10_engineering_and_10_art_science(self): self.assertEqual(allocate_1(10, 10), (Building.B, Building.C)) self.assertEqual(allocate_1_bad(10, 10), (Building.B, Building.C)) self.assertEqual(allocate_2(10, 10), (Building.B, Building.C)) - self.assertEqual(allocate_2_bad(10, 10), (Building.B, Building.C)) # fails + # self.assertEqual(allocate_2_bad(10, 10), (Building.B, Building.C)) # fails self.assertEqual(allocate_3(10, 10), (Building.B, Building.C)) self.assertEqual(allocate_3_bad(10, 10), (Building.B, Building.C)) self.assertEqual(allocate_4(10, 10), (Building.B, Building.C)) @@ -49,13 +49,13 @@ def test_10_engineering_and_10_art_science(self): def test_50_engineering_and_50_art_science(self): self.assertEqual(allocate_1(50, 50), (Building.B, Building.C)) - self.assertEqual(allocate_1_bad(50, 50), (Building.B, Building.C)) # fails + # self.assertEqual(allocate_1_bad(50, 50), (Building.B, Building.C)) # fails self.assertEqual(allocate_2(50, 50), (Building.B, Building.C)) self.assertEqual(allocate_2_bad(50, 50), (Building.B, Building.C)) self.assertEqual(allocate_3(50, 50), (Building.B, Building.C)) - self.assertEqual(allocate_3_bad(50, 50), (Building.B, Building.C)) # fails + # self.assertEqual(allocate_3_bad(50, 50), (Building.B, Building.C)) # fails self.assertEqual(allocate_4(50, 50), (Building.B, Building.C)) - self.assertEqual(allocate_4_bad(50, 50), (Building.B, Building.C)) # fails + # self.assertEqual(allocate_4_bad(50, 50), (Building.B, Building.C)) # fails def test_less_than_10_engineering_and_more_than_50_art_science(self): self.assertEqual(allocate_1(9, 51), (Building.A, Building.D)) @@ -67,6 +67,21 @@ def test_less_than_10_engineering_and_more_than_50_art_science(self): self.assertEqual(allocate_4(9, 51), (Building.A, Building.D)) self.assertEqual(allocate_4_bad(9, 51), (Building.A, Building.D)) + def test_engineering_and_art_science_sum_50(self): + self.assertEqual(allocate_1(50, 0), (Building.B, Building.B)) + self.assertEqual(allocate_1(0, 50), (Building.A, Building.C)) + self.assertEqual(allocate_1(25, 25), (Building.B, Building.C)) + + def test_engineering_and_art_science_sum_over_50_engineering_bigger(self): + self.assertEqual(allocate_1(50, 1), (Building.D, Building.B)) + self.assertEqual(allocate_1(50, 10), (Building.D, Building.C)) + self.assertEqual(allocate_1(52, 51), (Building.D, Building.D)) + + def test_engineering_and_art_science_sum_over_50_art_science_bigger(self): + self.assertEqual(allocate_1(1, 50), (Building.A, Building.D)) + self.assertEqual(allocate_1(10, 50), (Building.B, Building.D)) + self.assertEqual(allocate_1(51, 52), (Building.D, Building.D)) + if __name__ == '__main__': unittest.main() \ No newline at end of file From 1001d9c6674b8a000a83914741015779bd081cac Mon Sep 17 00:00:00 2001 From: Gabor Berta Date: Sat, 20 May 2023 22:58:01 +0200 Subject: [PATCH 5/7] readme.md: Updated with equality case if sum over 50 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a62da7e..3e055a4 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ | | <10 | art_science: B | | | between 10-50 | art_science: C | | >50 | >50 | both: D | -| x | y | x+y>50 -> bigger group: D | +| x | y | x+y>50 -> bigger group: D (equality -> art_science: D) | ## The goal is - Test this program From 0616c6c9e26340b78880d156549014ee4fa2102f Mon Sep 17 00:00:00 2001 From: Gabor Berta Date: Sat, 20 May 2023 22:58:46 +0200 Subject: [PATCH 6/7] allocation.py: Handle if course students sum over 50 case --- allocation.py | 292 ++++++++++++++++++++++++++++++++------------------ 1 file changed, 189 insertions(+), 103 deletions(-) diff --git a/allocation.py b/allocation.py index 58cddfc..0412a6a 100644 --- a/allocation.py +++ b/allocation.py @@ -28,22 +28,28 @@ def get_art_and_science_students_number(default_value): else: return default_value +def is_sum_over_50(engineering_students, art_science_students): + return engineering_students + art_science_students > 50 + +def get_bigger_number(engineering_students, art_science_students): + # in case of equality return art_science_students, because of the requirement + if engineering_students > art_science_students: + return "engineers" + else: + return "art_science" def allocate_1(engineering_students, art_science_students): engineer_course = Building.Default art_science_course = Building.Default - selected_engineer = False - selected_art_science = False - if engineering_students + art_science_students > 50: - if engineering_students > art_science_students: + if is_sum_over_50(engineering_students, art_science_students): + bigger_group = get_bigger_number(engineering_students, art_science_students) + if bigger_group == "engineers": engineer_course = Building.D - selected_engineer = True - if engineering_students < art_science_students: + if bigger_group == "art_science": art_science_course = Building.D - selected_art_science = True - if selected_engineer == False: + if engineer_course != Building.D: if engineering_students < 10: engineer_course = Building.A elif 10 <= engineering_students <= 50: @@ -51,7 +57,7 @@ def allocate_1(engineering_students, art_science_students): elif engineering_students > 50: engineer_course = Building.D - if selected_art_science == False: + if art_science_course != Building.D: if art_science_students < 10: art_science_course = Building.B elif 10 <= art_science_students <= 50: @@ -66,106 +72,160 @@ def allocate_1_bad(engineering_students, art_science_students): engineer_course = Building.Default art_science_course = Building.Default - if engineering_students < 10: - engineer_course = Building.A - if 10 <= engineering_students <= 50: - engineer_course = Building.B - if engineering_students >= 50: - engineer_course = Building.D - - if art_science_students < 10: - art_science_course = Building.B - if 10 <= art_science_students <= 50: - art_science_course = Building.C - if art_science_students >= 50: - art_science_course = Building.D + if is_sum_over_50(engineering_students, art_science_students): + bigger_group = get_bigger_number(engineering_students, art_science_students) + if bigger_group == "engineers": + engineer_course = Building.D + if bigger_group == "art_science": + art_science_course = Building.D + + if engineer_course == Building.D: + if engineering_students < 10: + engineer_course = Building.A + elif 10 <= engineering_students <= 50: + engineer_course = Building.B + elif engineering_students > 50: + engineer_course = Building.D + + if art_science_course != Building.D: + if art_science_students < 10: + art_science_course = Building.B + elif 10 <= art_science_students <= 50: + art_science_course = Building.C + elif art_science_students > 50: + art_science_course = Building.D return (engineer_course, art_science_course) def allocate_2(engineering_students, art_science_students): - engineering_students_map = { - engineering_students < 10: Building.A, - 10 <= engineering_students <= 50: Building.B, - engineering_students > 50: Building.D, - } + engineer_course = Building.Default + art_science_course = Building.Default - engineer_course = Building.Default - for condition, building in engineering_students_map.items(): - if condition: - engineer_course = building - break + if is_sum_over_50(engineering_students, art_science_students): + bigger_group = get_bigger_number(engineering_students, art_science_students) + if bigger_group == "engineers": + engineer_course = Building.D + if bigger_group == "art_science": + art_science_course = Building.D - art_science_students_map = { - art_science_students < 10: Building.B, - 10 <= art_science_students <= 50: Building.C, - art_science_students > 50: Building.D, - } + if engineer_course != Building.D: + engineering_students_map = { + engineering_students < 10: Building.A, + 10 <= engineering_students <= 50: Building.B, + engineering_students > 50: Building.D, + } + + for condition, building in engineering_students_map.items(): + if condition: + engineer_course = building + break - art_science_course = Building.Default - for condition, building in art_science_students_map.items(): - if condition: - art_science_course = building - break + if art_science_course != Building.D: + art_science_students_map = { + art_science_students < 10: Building.B, + 10 <= art_science_students <= 50: Building.C, + art_science_students > 50: Building.D, + } + + for condition, building in art_science_students_map.items(): + if condition: + art_science_course = building + break return (engineer_course, art_science_course) def allocate_2_bad(engineering_students, art_science_students): - engineering_students_map = { - engineering_students < 10: Building.A, - 10 < engineering_students <= 50: Building.B, - engineering_students > 50: Building.D, - } + engineer_course = Building.Default + art_science_course = Building.Default - engineer_course = Building.Default - for condition, building in engineering_students_map.items(): - if condition: - engineer_course = building + if is_sum_over_50(engineering_students, art_science_students): + bigger_group = get_bigger_number(art_science_students, engineering_students) + if bigger_group == "engineers": + engineer_course = Building.D + if bigger_group == "art_science": + art_science_course = Building.D - art_science_students_map = { - art_science_students < 10: Building.B, - 10 < art_science_students <= 50: Building.C, - art_science_students > 50: Building.D, - } + if engineer_course != Building.D: + engineering_students_map = { + engineering_students < 10: Building.A, + 10 <= engineering_students <= 50: Building.B, + engineering_students > 50: Building.D, + } + + for condition, building in engineering_students_map.items(): + if condition: + engineer_course = building + break - art_science_course = Building.Default - for condition, building in art_science_students_map.items(): - if condition: - art_science_course = building + if art_science_course != Building.D: + art_science_students_map = { + art_science_students < 10: Building.B, + 10 <= art_science_students <= 50: Building.C, + art_science_students > 50: Building.D, + } + + for condition, building in art_science_students_map.items(): + if condition: + art_science_course = building + break return (engineer_course, art_science_course) def allocate_3(engineering_students, art_science_students): - engineer_course = ( - Building.A if engineering_students < 10 - else Building.B if 10 <= engineering_students <= 50 - else Building.D - ) - - art_science_course = ( - Building.B if art_science_students < 10 - else Building.C if 10 <= art_science_students <= 50 - else Building.D - ) + engineer_course = Building.Default + art_science_course = Building.Default + + if is_sum_over_50(engineering_students, art_science_students): + bigger_group = get_bigger_number(engineering_students, art_science_students) + if bigger_group == "engineers": + engineer_course = Building.D + if bigger_group == "art_science": + art_science_course = Building.D + + if engineer_course != Building.D: + engineer_course = ( + Building.A if engineering_students < 10 + else Building.B if 10 <= engineering_students <= 50 + else Building.D + ) + + if art_science_course != Building.D: + art_science_course = ( + Building.B if art_science_students < 10 + else Building.C if 10 <= art_science_students <= 50 + else Building.D + ) return (engineer_course, art_science_course) def allocate_3_bad(engineering_students, art_science_students): - engineer_course = ( - Building.A if engineering_students < 10 - else Building.B if 10 <= engineering_students < 50 - else Building.D - ) - - art_science_course = ( - Building.B if art_science_students < 10 - else Building.C if 10 <= art_science_students < 50 - else Building.D - ) + engineer_course = Building.Default + art_science_course = Building.Default + if is_sum_over_50(engineering_students, art_science_students): + bigger_group = get_bigger_number(engineering_students, art_science_students) + if bigger_group == "engineers": + engineer_course = Building.D + if bigger_group == "art_science": + art_science_course = Building.D + + if engineer_course != Building.D: + engineer_course = ( + Building.A if engineering_students < 10 + else Building.B if 10 < engineering_students <= 50 + else Building.D + ) + + if art_science_course != Building.D: + art_science_course = ( + Building.B if art_science_students < 10 + else Building.C if 10 < art_science_students <= 50 + else Building.D + ) return (engineer_course, art_science_course) @@ -176,17 +236,28 @@ def get_building(condition_map): return building return Building.Default - engineer_course = get_building([ - (engineering_students < 10, Building.A), - (10 <= engineering_students <= 50, Building.B), - (engineering_students > 50, Building.D), - ]) + engineer_course = Building.Default + art_science_course = Building.Default + if is_sum_over_50(engineering_students, art_science_students): + bigger_group = get_bigger_number(engineering_students, art_science_students) + if bigger_group == "engineers": + engineer_course = Building.D + if bigger_group == "art_science": + art_science_course = Building.D + + if engineer_course != Building.D: + engineer_course = get_building([ + (engineering_students < 10, Building.A), + (10 <= engineering_students <= 50, Building.B), + (engineering_students > 50, Building.D), + ]) - art_science_course = get_building([ - (art_science_students < 10, Building.B), - (10 <= art_science_students <= 50, Building.C), - (art_science_students > 50, Building.D), - ]) + if art_science_course != Building.D: + art_science_course = get_building([ + (art_science_students < 10, Building.B), + (10 <= art_science_students <= 50, Building.C), + (art_science_students > 50, Building.D), + ]) return (engineer_course, art_science_course) @@ -198,17 +269,28 @@ def get_building(condition_map): return building return Building.Default - engineer_course = get_building([ - (engineering_students < 10, Building.A), - (10 >= engineering_students <= 50, Building.B), - (engineering_students > 50, Building.D), - ]) + engineer_course = Building.Default + art_science_course = Building.Default + if is_sum_over_50(engineering_students, art_science_students): + bigger_group = get_bigger_number(engineering_students, art_science_students) + if bigger_group == "engineers": + engineer_course = Building.D + if bigger_group == "art_science": + art_science_course = Building.D + + if engineer_course != Building.D: + engineer_course = get_building([ + (engineering_students < 10, Building.A), + (10 <= engineering_students <= 50, Building.B), + (engineering_students > 50, Building.D), + ]) - art_science_course = get_building([ - (art_science_students < 10, Building.B), - (10 >= art_science_students <= 50, Building.C), - (art_science_students > 50, Building.D), - ]) + if engineer_course != Building.D: + art_science_course = get_building([ + (art_science_students < 10, Building.B), + (10 <= art_science_students <= 50, Building.C), + (art_science_students > 50, Building.D), + ]) return (engineer_course, art_science_course) @@ -226,5 +308,9 @@ def get_building(condition_map): print("ENGINEERING_STUDENTS: ", ENGINEERING_STUDENTS) print("ART_AND_SCIENCE_STUDENTS: ", ART_AND_SCIENCE_STUDENTS) -print(allocate_1(ENGINEERING_STUDENTS, ART_AND_SCIENCE_STUDENTS)) + +print("allocate_1: ",allocate_1(ENGINEERING_STUDENTS, ART_AND_SCIENCE_STUDENTS)) +print("allocate_2: ",allocate_2(ENGINEERING_STUDENTS, ART_AND_SCIENCE_STUDENTS)) +print("allocate_3: ",allocate_3(ENGINEERING_STUDENTS, ART_AND_SCIENCE_STUDENTS)) +print("allocate_4: ",allocate_4(ENGINEERING_STUDENTS, ART_AND_SCIENCE_STUDENTS)) ''' \ No newline at end of file From 362c83c89df36a90cab1eb10e383bb4325abb93e Mon Sep 17 00:00:00 2001 From: Gabor Berta Date: Sat, 20 May 2023 23:03:46 +0200 Subject: [PATCH 7/7] test.py: added tests for sum over 50 case and changed previous ones to handle this case too --- test.py | 73 +++++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 55 insertions(+), 18 deletions(-) diff --git a/test.py b/test.py index 7ce9972..052fa34 100644 --- a/test.py +++ b/test.py @@ -9,7 +9,7 @@ class TestAllocations(unittest.TestCase): def test_less_than_10_engineering_and_art_science(self): self.assertEqual(allocate_1(8, 2), (Building.A, Building.B)) - self.assertEqual(allocate_1_bad(8, 2), (Building.A, Building.B)) + self.assertEqual(allocate_1_bad(8, 2), (Building.A, Building.B)) # fails self.assertEqual(allocate_2(8, 2), (Building.A, Building.B)) self.assertEqual(allocate_2_bad(8, 2), (Building.A, Building.B)) self.assertEqual(allocate_3(8, 2), (Building.A, Building.B)) @@ -19,17 +19,17 @@ def test_less_than_10_engineering_and_art_science(self): def test_between_10_and_50_engineering_and_art_science_and_sum_less_50(self): self.assertEqual(allocate_1(20, 25), (Building.B, Building.C)) - self.assertEqual(allocate_1_bad(20, 25), (Building.B, Building.C)) + self.assertEqual(allocate_1_bad(20, 25), (Building.B, Building.C)) # fails self.assertEqual(allocate_2(20, 25), (Building.B, Building.C)) self.assertEqual(allocate_2_bad(20, 25), (Building.B, Building.C)) self.assertEqual(allocate_3(20, 25), (Building.B, Building.C)) self.assertEqual(allocate_3_bad(20, 25), (Building.B, Building.C)) self.assertEqual(allocate_4(20, 25), (Building.B, Building.C)) - # self.assertEqual(allocate_4_bad(20, 25), (Building.B, Building.C)) # fails + self.assertEqual(allocate_4_bad(20, 25), (Building.B, Building.C)) # fails def test_more_than_50_engineering_and_art_science(self): self.assertEqual(allocate_1(60, 75), (Building.D, Building.D)) - self.assertEqual(allocate_1_bad(60, 75), (Building.D, Building.D)) + self.assertEqual(allocate_1_bad(60, 75), (Building.D, Building.D)) # fails self.assertEqual(allocate_2(60, 75), (Building.D, Building.D)) self.assertEqual(allocate_2_bad(60, 75), (Building.D, Building.D)) self.assertEqual(allocate_3(60, 75), (Building.D, Building.D)) @@ -39,29 +39,29 @@ def test_more_than_50_engineering_and_art_science(self): def test_10_engineering_and_10_art_science(self): self.assertEqual(allocate_1(10, 10), (Building.B, Building.C)) - self.assertEqual(allocate_1_bad(10, 10), (Building.B, Building.C)) + self.assertEqual(allocate_1_bad(10, 10), (Building.B, Building.C)) # fails self.assertEqual(allocate_2(10, 10), (Building.B, Building.C)) - # self.assertEqual(allocate_2_bad(10, 10), (Building.B, Building.C)) # fails + self.assertEqual(allocate_2_bad(10, 10), (Building.B, Building.C)) self.assertEqual(allocate_3(10, 10), (Building.B, Building.C)) - self.assertEqual(allocate_3_bad(10, 10), (Building.B, Building.C)) + self.assertEqual(allocate_3_bad(10, 10), (Building.B, Building.C)) # fails self.assertEqual(allocate_4(10, 10), (Building.B, Building.C)) self.assertEqual(allocate_4_bad(10, 10), (Building.B, Building.C)) - def test_50_engineering_and_50_art_science(self): - self.assertEqual(allocate_1(50, 50), (Building.B, Building.C)) - # self.assertEqual(allocate_1_bad(50, 50), (Building.B, Building.C)) # fails - self.assertEqual(allocate_2(50, 50), (Building.B, Building.C)) - self.assertEqual(allocate_2_bad(50, 50), (Building.B, Building.C)) - self.assertEqual(allocate_3(50, 50), (Building.B, Building.C)) - # self.assertEqual(allocate_3_bad(50, 50), (Building.B, Building.C)) # fails - self.assertEqual(allocate_4(50, 50), (Building.B, Building.C)) - # self.assertEqual(allocate_4_bad(50, 50), (Building.B, Building.C)) # fails + def test_50_engineering_and_50_art_science_sum_50_above_and_equality(self): + self.assertEqual(allocate_1(50, 50), (Building.B, Building.D)) + self.assertEqual(allocate_1_bad(50, 50), (Building.B, Building.D)) # fails + self.assertEqual(allocate_2(50, 50), (Building.B, Building.D)) + self.assertEqual(allocate_2_bad(50, 50), (Building.B, Building.D)) + self.assertEqual(allocate_3(50, 50), (Building.B, Building.D)) + self.assertEqual(allocate_3_bad(50, 50), (Building.B, Building.D)) + self.assertEqual(allocate_4(50, 50), (Building.B, Building.D)) + self.assertEqual(allocate_4_bad(50, 50), (Building.B, Building.D)) # fails def test_less_than_10_engineering_and_more_than_50_art_science(self): self.assertEqual(allocate_1(9, 51), (Building.A, Building.D)) - self.assertEqual(allocate_1_bad(9, 51), (Building.A, Building.D)) + self.assertEqual(allocate_1_bad(9, 51), (Building.A, Building.D)) # fails self.assertEqual(allocate_2(9, 51), (Building.A, Building.D)) - self.assertEqual(allocate_2_bad(9, 51), (Building.A, Building.D)) + self.assertEqual(allocate_2_bad(9, 51), (Building.A, Building.D)) # fails self.assertEqual(allocate_3(9, 51), (Building.A, Building.D)) self.assertEqual(allocate_3_bad(9, 51), (Building.A, Building.D)) self.assertEqual(allocate_4(9, 51), (Building.A, Building.D)) @@ -71,16 +71,53 @@ def test_engineering_and_art_science_sum_50(self): self.assertEqual(allocate_1(50, 0), (Building.B, Building.B)) self.assertEqual(allocate_1(0, 50), (Building.A, Building.C)) self.assertEqual(allocate_1(25, 25), (Building.B, Building.C)) + self.assertEqual(allocate_1_bad(50, 0), (Building.B, Building.B)) # fails + self.assertEqual(allocate_1_bad(0, 50), (Building.A, Building.C)) # fails + self.assertEqual(allocate_1_bad(25, 25), (Building.B, Building.C)) # fails + self.assertEqual(allocate_2(50, 0), (Building.B, Building.B)) + self.assertEqual(allocate_2(0, 50), (Building.A, Building.C)) + self.assertEqual(allocate_2(25, 25), (Building.B, Building.C)) + self.assertEqual(allocate_3(50, 0), (Building.B, Building.B)) + self.assertEqual(allocate_3(0, 50), (Building.A, Building.C)) + self.assertEqual(allocate_3(25, 25), (Building.B, Building.C)) + self.assertEqual(allocate_4(50, 0), (Building.B, Building.B)) + self.assertEqual(allocate_4(0, 50), (Building.A, Building.C)) + self.assertEqual(allocate_4(25, 25), (Building.B, Building.C)) def test_engineering_and_art_science_sum_over_50_engineering_bigger(self): self.assertEqual(allocate_1(50, 1), (Building.D, Building.B)) self.assertEqual(allocate_1(50, 10), (Building.D, Building.C)) self.assertEqual(allocate_1(52, 51), (Building.D, Building.D)) + self.assertEqual(allocate_1_bad(50, 1), (Building.D, Building.B)) # fails + self.assertEqual(allocate_1_bad(50, 10), (Building.D, Building.C)) # fails + self.assertEqual(allocate_1_bad(52, 51), (Building.D, Building.D)) + self.assertEqual(allocate_2(50, 1), (Building.D, Building.B)) + self.assertEqual(allocate_2(50, 10), (Building.D, Building.C)) + self.assertEqual(allocate_2(52, 51), (Building.D, Building.D)) + self.assertEqual(allocate_3(50, 1), (Building.D, Building.B)) + self.assertEqual(allocate_3(50, 10), (Building.D, Building.C)) + self.assertEqual(allocate_3(52, 51), (Building.D, Building.D)) + self.assertEqual(allocate_4(50, 1), (Building.D, Building.B)) + self.assertEqual(allocate_4(50, 10), (Building.D, Building.C)) + self.assertEqual(allocate_4(52, 51), (Building.D, Building.D)) def test_engineering_and_art_science_sum_over_50_art_science_bigger(self): self.assertEqual(allocate_1(1, 50), (Building.A, Building.D)) self.assertEqual(allocate_1(10, 50), (Building.B, Building.D)) self.assertEqual(allocate_1(51, 52), (Building.D, Building.D)) + self.assertEqual(allocate_1_bad(1, 50), (Building.A, Building.D)) # fails + self.assertEqual(allocate_1_bad(10, 50), (Building.B, Building.D)) # fails + self.assertEqual(allocate_1_bad(51, 52), (Building.D, Building.D)) # fails + self.assertEqual(allocate_2(1, 50), (Building.A, Building.D)) + self.assertEqual(allocate_2(10, 50), (Building.B, Building.D)) + self.assertEqual(allocate_2(51, 52), (Building.D, Building.D)) + self.assertEqual(allocate_3(1, 50), (Building.A, Building.D)) + self.assertEqual(allocate_3(10, 50), (Building.B, Building.D)) + self.assertEqual(allocate_3(51, 52), (Building.D, Building.D)) + self.assertEqual(allocate_4(1, 50), (Building.A, Building.D)) + self.assertEqual(allocate_4(10, 50), (Building.B, Building.D)) + self.assertEqual(allocate_4(51, 52), (Building.D, Building.D)) + if __name__ == '__main__':