def testZeroDogs(self): calculator = Calculator() result = calculator.dogfood_calc(small_dogs=0, medium_dogs=0, large_dogs=0, food_supply=20) self.assertEqual(result, 0, "FAIL: Function doesn't limit dogs")
def testHappy(self): calculator = Calculator() result = calculator.dogfood_calc(small_dogs=5, medium_dogs=3, large_dogs=7, food_supply=17) self.assertEqual(result, 363.6, "FAIL: Happy Path")
def testHappyDogFoodFloat(self): calculator = Calculator() result = calculator.dogfood_calc(small_dogs=5, medium_dogs=5, large_dogs=5, food_supply=20.9) self.assertEqual(result, 334.92, "FAIL: Happy Path for Float Dog Food Input")
def testNegativeSmallDog(self): calculator = Calculator() with self.assertRaises(TypeError) as error: calculator.dogfood_calc(small_dogs=-5, medium_dogs=8, large_dogs=4.5, food_supply=20) self.assertEqual(str(error.exception), "unsupported operand type(s) for +: 'int' and 'str'")
def testMorFoodThanNeeded(self): calculator = Calculator() result = calculator.dogfood_calc(small_dogs=0, medium_dogs=5, large_dogs=0, food_supply=120.1) self.assertEqual( result, 0, "FAIL: If shelter has more dog food than needed, return 0")
def testDogLimit(self): calculator = Calculator() result = calculator.dogfood_calc(small_dogs=5, medium_dogs=5, large_dogs=21, food_supply=20) self.assertEqual(result, "Sorry, you have too many dogs at your shelter", "FAIL: Function doesn't limit dogs")
def testStringMediumDog(self): calculator = Calculator() with self.assertRaises(TypeError) as error: calculator.dogfood_calc(small_dogs=5, medium_dogs="Hello", large_dogs=21, food_supply=20) self.assertEqual(str(error.exception), "Hello is a value for the number of dogs")
def testTrippleHappy(self): calculator = Calculator() dogs = [10, 9, 8] food = [30, 20, 25] expected_results = [684.0, 624.0, 546.0] for x in range(3): result = calculator.dogfood_calc(small_dogs=dogs[x], medium_dogs=dogs[x], large_dogs=dogs[x], food_supply=food[x]) self.assertEqual(result, expected_results[x], "FAIL: Tripple Happy Path")
def testNumberFunction(self): numbers = [0, 2000.3, -3, -100.33] non_numbers = [ "Yolo", [3, 4, 3.2], (123, 'john'), { 'name': 'john', 'code': 6734 } ] calculator = Calculator() for x in range(4): number_exception_raised = False non_number_exception_raised = False try: calculator.ensure_number(numbers[x]) except: number_exception_raised = True try: calculator.ensure_number(non_numbers[x]) except: non_number_exception_raised = True self.assertEqual(False, number_exception_raised, "Exception raised for Number: " + str(numbers[x])) self.assertEqual( True, non_number_exception_raised, "No Exception raised for Non-Number: " + str(non_numbers[x]))
def testIntegerFunction(self): integers = [0, 20, -3, -100, 10000] non_integers = [ -2.3, "Yolo", [3, 4, 3.2], (123, 'john'), { 'name': 'john', 'code': 6734 } ] calculator = Calculator() for x in range(5): int_exception_raised = False non_int_exception_raised = False try: calculator.ensure_int(integers[x]) except: int_exception_raised = True try: calculator.ensure_int(non_integers[x]) except: non_int_exception_raised = True self.assertEqual( False, int_exception_raised, "Exception raised for Integer: " + str(integers[x])) self.assertEqual( True, non_int_exception_raised, "No Exception raised for Non-Integer: " + str(non_integers[x]))
def testNegativeDogs(self): positive_nums = [0, 20.4, 3, 100] negative_nums = [-2, -1, -9.3, -200] calculator = Calculator() for x in range(4): positive_num_exception_raised = False negative_num_exception_raised = False try: calculator.positive(positive_nums[x]) except: positive_num_exception_raised = True try: calculator.positive(negative_nums[x]) except: negative_num_exception_raised = True self.assertEqual( False, positive_num_exception_raised, "Exception raised for Positive Number: " + str(positive_nums[x])) self.assertEqual( True, negative_num_exception_raised, "No Exception raised for Negative Number: " + str(negative_nums[x]))