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

class IsPalindromeTests(unittest.TestCase):

    def test_default_case(self):
        function = main.is_palindrome
        
        test = False
        try:
            incorrect = ""
            result = function.__doc__.strip()
            test = incorrect != result
        except:
            pass
        
        self.assertTrue(test, "No docstring")


        
        inputs = ("")

        test = False
        correct = True
        if isinstance(inputs, tuple):
            result = function(*inputs)
        else:
            result = function(inputs)
        test = correct == result
        
        self.assertTrue(test, "Doesn't work on a the empty string.")


        
        inputs = ("x")

        test = False
        correct = True
        if isinstance(inputs, tuple):
            result = function(*inputs)
        else:
            result = function(inputs)
        test = correct == result
        
        self.assertTrue(test, "Doesn't work on a single-character string.")


        
        inputs = ("xx")

        test = False
        correct = True
        if isinstance(inputs, tuple):
            result = function(*inputs)
        else:
            result = function(inputs)
        test = correct == result
        
        self.assertTrue(test, "Doesn't work on a 2-character-long palindrome.")


        
        inputs = ("lil")

        test = False
        correct = True
        if isinstance(inputs, tuple):
            result = function(*inputs)
        else:
            result = function(inputs)
        test = correct == result
        
        self.assertTrue(test, "Doesn't work on a short odd-length palindrome.")


        
        inputs = ("toot")

        test = False
        correct = True
        if isinstance(inputs, tuple):
            result = function(*inputs)
        else:
            result = function(inputs)
        test = correct == result
        
        self.assertTrue(test, "Doesn't work on a 4-character-long palindrome.")


        
        inputs = ("amanaplanacanalpanama")

        test = False
        correct = True
        if isinstance(inputs, tuple):
            result = function(*inputs)
        else:
            result = function(inputs)
        test = correct == result
        
        self.assertTrue(test, "Doesn't work on a long odd-length palindrome.")


        
        inputs = ("to")

        test = False
        correct = False
        if isinstance(inputs, tuple):
            result = function(*inputs)
        else:
            result = function(inputs)
        test = correct == result
        
        self.assertTrue(test, "Doesn't work on a short non-palindrome.")


        
        inputs = ("tott")

        test = False
        correct = False
        if isinstance(inputs, tuple):
            result = function(*inputs)
        else:
            result = function(inputs)
        test = correct == result
        
        self.assertTrue(test, "Doesn't work on a short non-palindrome where the first and last letters are the same.")


        
        inputs = ("abcdefghijklmnlkjihgfedcba")

        test = False
        correct = False
        if isinstance(inputs, tuple):
            result = function(*inputs)
        else:
            result = function(inputs)
        test = correct == result
        
        self.assertTrue(test, "Doesn't work on a long non-palindrome.")
        
        
        
if __name__ == "__main__":
    tests = IsPalindromeTests()
    tests.test_default_case()