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

class AllLowerCaseTests(unittest.TestCase):

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

        
        inputs = ([])
        original = copy.deepcopy(inputs)
        correct = []
        if isinstance(inputs, tuple):
            result = function(*inputs)
        else:
            result = function(inputs)
        test = original == inputs
        message = "Modifies the inputs."
        self.assertTrue(test, message)
        test = result == correct
        message = "Doesn't work on an empty list."
        self.assertTrue(test, message)
        

        
        inputs = (["A"])
        original = copy.deepcopy(inputs)
        correct = ["a"]
        if isinstance(inputs, tuple):
            result = function(*inputs)
        else:
            result = function(inputs)
        test = original == inputs
        message = "Modifies the inputs."
        self.assertTrue(test, message)
        test = result == correct
        message = "Doesn't work on a list with one string."
        self.assertTrue(test, message)
        

        
        inputs = (["AbA"])
        original = copy.deepcopy(inputs)
        correct = ["aba"]
        if isinstance(inputs, tuple):
            result = function(*inputs)
        else:
            result = function(inputs)
        test = original == inputs
        message = "Modifies the inputs."
        self.assertTrue(test, message)
        test = result == correct
        message = "Doesn't work on a list with one string."
        self.assertTrue(test, message)
        

        
        inputs = (["A", "B", "C"])
        original = copy.deepcopy(inputs)
        correct = ["a", "b", "c"]
        if isinstance(inputs, tuple):
            result = function(*inputs)
        else:
            result = function(inputs)
        test = original == inputs
        message = "Modifies the inputs."
        self.assertTrue(test, message)
        test = result == correct
        message = "Doesn't work on a list with three single-character strings."
        self.assertTrue(test, message)
        

        
        inputs = (["HI", "YO", "HOLA", "HOLLA"])
        original = copy.deepcopy(inputs)
        correct = ["hi", "yo", "hola", "holla"]
        if isinstance(inputs, tuple):
            result = function(*inputs)
        else:
            result = function(inputs)
        test = original == inputs
        message = "Modifies the inputs."
        self.assertTrue(test, message)
        test = result == correct
        message = "Doesn't work on a list with some strings."
        self.assertTrue(test, message)


        
        inputs = (["Hi", "small", "HiThere!", "W00T in TimE!"])
        original = copy.deepcopy(inputs)
        correct = ["hi", "small", "hithere!", "w00t in time!"]
        if isinstance(inputs, tuple):
            result = function(*inputs)
        else:
            result = function(inputs)
        test = original == inputs
        message = "Modifies the inputs."
        self.assertTrue(test, message)
        test = result == correct
        message = "Doesn't work on a list of various strings."
        self.assertTrue(test, message)
        
        
if __name__ == "__main__":
    tests = AllLowerCaseTests()
    tests.test_default_case()