def test_fibonacci_sequence(self): '''Test a known sequence of Fibonacci numbers''' # Source: https://en.wikipedia.org/wiki/Fibonacci_number known_fibonacci_sequence = { 1: 0, 2: 1, 3: 1, 4: 2, 5: 3, 6: 5, 7: 8, 8: 13, 9: 21, 10: 34, 11: 55, 12: 89, 13: 144, 14: 233, 15: 377, 16: 610, 17: 987, 18: 1597, 19: 2584, 20: 4181, 21: 6765, } for n_th, expected_result in known_fibonacci_sequence.items(): calculated = fibonacci.calculate(n=n_th) self.assertEqual(first=calculated, second=expected_result)
def handler(event: Dict, context: Dict) -> Dict: '''Lambda handler function''' global first_run cold_start = True if first_run else False first_run = False n = event.get('n', c.DEFAULT_FIBONACCI_N) n_th = fibonacci.calculate(n=n) return { 'cold_start': cold_start, 'n_th': n_th, 'remaining_time': context.get_remaining_time_in_millis(), }
def test_boundary_logic(self): self.assertEqual(fibonacci.calculate(0), 0) self.assertEqual(fibonacci.calculate(1), 1)
def test_api_interface(self): # self.assertRaises(fibonacci.calculate(), 'TypeError') self.assertEqual(fibonacci.calculate(0), 0)
def test_incorrect_input(self): self.assertEqual(fibonacci.calculate(-1), "WRONG INPUT") self.assertEqual(fibonacci.calculate(4.4), "WRONG INPUT") self.assertEqual(fibonacci.calculate("a small banana"), "WRONG INPUT") self.assertEqual(fibonacci.calculate(False), "WRONG INPUT") self.assertEqual(fibonacci.calculate(None), "WRONG INPUT")
def test_logic(self): self.assertEqual(fibonacci.calculate(2), 1) self.assertEqual(fibonacci.calculate(3), 2) self.assertEqual(fibonacci.calculate(4), 3) self.assertEqual(fibonacci.calculate(5), 5) self.assertEqual(fibonacci.calculate(10), 55)
def test_one(): result = fibonacci.calculate(1) assert result == 1
def test_zero(): result = fibonacci.calculate(0) assert result == 0
def test_negative_number(): with pytest.raises(ValueError): fibonacci.calculate(-1)
def test_string(): with pytest.raises(TypeError): fibonacci.calculate('AAAA')
def test_valid_number(): result = fibonacci.calculate(6) assert result == 8
def test_three(): result = fibonacci.calculate(3) assert result == 2