# math_recursion_test.py
# Walker M. White (wmw2), Lillian Lee (LJL2)
# Mar 5, 2014
"""Unit test for recursive mathematical functions."""
import cornelltest
import math_recursion

def test_factorial():
    """ test factorial function"""
    cornelltest.assert_equals(1, math_recursion.factorial(0));
    cornelltest.assert_equals(1, math_recursion.factorial(1));
    cornelltest.assert_equals(2, math_recursion.factorial(2));
    cornelltest.assert_equals(6, math_recursion.factorial(3));
    cornelltest.assert_equals(3628800, math_recursion.factorial(10));

    print ' finished test of factorial'

def test_fibonacci():
    """ test Fibonacci function"""
    cornelltest.assert_equals(1,  math_recursion.fibonacci(0));
    cornelltest.assert_equals(1,  math_recursion.fibonacci(1));
    cornelltest.assert_equals(2,  math_recursion.fibonacci(2));
    cornelltest.assert_equals(3,  math_recursion.fibonacci(3));
    cornelltest.assert_equals(5,  math_recursion.fibonacci(4));
    cornelltest.assert_equals(144,  math_recursion.fibonacci(11));
    cornelltest.assert_equals(10946,  math_recursion.fibonacci(20));

    print ' finished test of fibonacci'

# Application Code
if __name__ == '__main__':
    test_factorial()
    test_fibonacci()
    print 'Module math_recursion passed all test cases'