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

class PrintAboutIntegersTests(unittest.TestCase):
    
    def test_default_case(self):
        function = main.print_about_integers
        

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

        

        with mock.patch('sys.stdout', new=io.StringIO()) as fake_stdout:
            function(0, 1)
        output = fake_stdout.getvalue().strip()

        correct = "The second number is higher."
        works = output == correct
        feedback = "Doesn't work when the second argument is bigger."
        self.assertTrue(correct, feedback)

        

        with mock.patch('sys.stdout', new=io.StringIO()) as fake_stdout:
            function(0, 1000)
        output = fake_stdout.getvalue().strip()

        correct = "The second number is higher."
        works = output == correct
        feedback = "Doesn't work when the second argument is bigger."
        self.assertTrue(correct, feedback)

        

        with mock.patch('sys.stdout', new=io.StringIO()) as fake_stdout:
            function(100012, 100019)
        output = fake_stdout.getvalue().strip()

        correct = "The second number is higher."
        works = output == correct
        feedback = "Doesn't work when the second argument is bigger."
        self.assertTrue(correct, feedback)

        
        


        with mock.patch('sys.stdout', new=io.StringIO()) as fake_stdout:
            function(1, 0)
        output = fake_stdout.getvalue().strip()

        

        correct = "The first number is higher."
        works = output == correct
        feedback = "Doesn't work when the first argument is bigger."
        self.assertTrue(correct, feedback)
        


        with mock.patch('sys.stdout', new=io.StringIO()) as fake_stdout:
            function(10, 0)
        output = fake_stdout.getvalue().strip()

        

        correct = "The first number is higher."
        works = output == correct
        feedback = "Doesn't work when the first argument is bigger."
        self.assertTrue(correct, feedback)
        


        with mock.patch('sys.stdout', new=io.StringIO()) as fake_stdout:
            function(109, 68)
        output = fake_stdout.getvalue().strip()

        

        correct = "The first number is higher."
        works = output == correct
        feedback = "Doesn't work when the first argument is bigger."
        self.assertTrue(correct, feedback)
        


        with mock.patch('sys.stdout', new=io.StringIO()) as fake_stdout:
            function(0, 0)
        output = fake_stdout.getvalue().strip()

        

        correct = "The numbers are equal."
        works = output == correct
        feedback = "Doesn't work when the arguments are equal."
        self.assertTrue(correct, feedback)
        


        with mock.patch('sys.stdout', new=io.StringIO()) as fake_stdout:
            function(120, 120)
        output = fake_stdout.getvalue().strip()

        

        correct = "The numbers are equal."
        works = output == correct
        feedback = "Doesn't work when the arguments are equal."
        self.assertTrue(correct, feedback)
        
        
if __name__ == "__main__":
    tests = PrintAboutIntegersTests()
    tests.test_default_case()