import unittest
import io
import re
from unittest import mock
import math
import student_X as main #Replace student_X with your filename 
import inspect
    
    
    
 

class IsOddTests(unittest.TestCase):

    def test_default_case(self):
        function = main.is_odd

        try:
            docstring = function.__doc__
            docstring = docstring.strip()
        except:
            docstring = ""
        correct = docstring != ""
        message = "No docstring."
        self.assertTrue(correct, message) 

        
        lines = inspect.getsource(function)
        test = "is_even(" in lines
        message = "Doesn't use function composition.  I want your function to call another of the functions you've already written."
        self.assertTrue(test, message)

        
        test = False
        try:
            correct = False
            result = function(0)
            test = correct == result
        except:
            pass
        message = "Doesn't work on zero!"
        self.assertTrue(test, message)
        

        test = False
        try:
            correct = True
            result = function(437)
            test = correct == result
        except:
            pass
        message = "Doesn't work on a large, positive odd number."
        self.assertTrue(test, message)

        
        test = False
        try:
            correct = False
            result = function(288)
            test = correct == result
        except:
            pass
        message = "Doesn't work on a large, positive even number."
        self.assertTrue(test, message)
            
            
        
        
        
if __name__ == "__main__":
    tests = IsOddTests()
    tests.test_default_case()