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

class CombineAndSortTests(unittest.TestCase):

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

        
        inputs = ([],  [])
        original = ([],  [])
        correct = [] 
        if isinstance(inputs, tuple):
            result = function(*inputs)
        else:
            result = function(inputs)
        test = inputs == original
        message = "Modifies the input list.  It should leave that unchanged."
        self.assertTrue(test, message)
        message = "Doesn't correctly merge two empty lists."
        self.assertTrue(test, message)

        
        inputs = ([],  [1])
        original = ([],  [1])
        correct = [1] 
        if isinstance(inputs, tuple):
            result = function(*inputs)
        else:
            result = function(inputs)
        test = inputs == original
        message = "Modifies the input list.  It should leave that unchanged."
        self.assertTrue(test, message)
        message = "Doesn't correctly merge the empty list with a list with one element."
        self.assertTrue(test, message)

        
        inputs = ([1],  [])
        original = ([1],  [])
        correct = [1] 
        if isinstance(inputs, tuple):
            result = function(*inputs)
        else:
            result = function(inputs)
        test = inputs == original
        message = "Modifies the input list.  It should leave that unchanged."
        self.assertTrue(test, message)
        message = "Doesn't correctly merge the empty list with a list with one element."
        self.assertTrue(test, message)

        
        inputs = ([1],  [5])
        original = ([1],  [5])
        correct = [1, 5] 
        if isinstance(inputs, tuple):
            result = function(*inputs)
        else:
            result = function(inputs)
        test = inputs == original
        message = "Modifies the input list.  It should leave that unchanged."
        self.assertTrue(test, message)
        message = "Doesn't correctly combine two lists with one element each."
        self.assertTrue(test, message)

        
        inputs = ([31],  [5])
        original = ([31],  [5])
        correct = [5, 31] 
        if isinstance(inputs, tuple):
            result = function(*inputs)
        else:
            result = function(inputs)
        test = inputs == original
        message = "Modifies the input list.  It should leave that unchanged."
        self.assertTrue(test, message)
        message = "Doesn't correctly combine two lists with one element each."
        self.assertTrue(test, message)

        
        inputs = ([1, 3, 5, 7, 9],  [5])
        original = ([1, 3, 5, 7, 9],  [5])
        correct = [1, 3, 5, 5, 7, 9] 
        if isinstance(inputs, tuple):
            result = function(*inputs)
        else:
            result = function(inputs)
        test = inputs == original
        message = "Modifies the input list.  It should leave that unchanged."
        self.assertTrue(test, message)
        message = "Doesn't correctly combine two lists of integers."
        self.assertTrue(test, message)

        
        inputs = (["seawolf", "wolf", "dog"],  ["hound", "fox", "dog", "walrus"])
        original = (["seawolf", "wolf", "dog"],  ["hound", "fox", "dog", "walrus"])
        correct = ["dog", "dog", "fox", "hound", "seawolf", "walrus", "wolf"] 
        if isinstance(inputs, tuple):
            result = function(*inputs)
        else:
            result = function(inputs)
        test = inputs == original
        message = "Modifies the input list.  It should leave that unchanged."
        self.assertTrue(test, message)
        message = "Doesn't correctly merge two lists of strings."
        self.assertTrue(test, message)
        
        
if __name__ == "__main__":
    tests = CombineAndSortTests()
    tests.test_default_case()