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
import inspect
    
    
    
 

class SphereTests(unittest.TestCase):
    
    def test_default_case(self):
        function = main.sphere
        
        with mock.patch('sys.stdout', new=io.StringIO()) as fake_stdout:
            function()

        output = fake_stdout.getvalue().strip()
        source_code = inspect.getsource(function)
        
        
        correct = "523.598775598" in output
        message = "You aren't printing the correct volume."
        self.assertTrue(correct, message)
        
        
        correct = "radius = 5" in source_code
        message = "It looks like you modified the first line."
        self.assertTrue(correct, message)
        
        
        correct = "pi = 3.1415926535897932" in source_code
        message = "It looks like you modified the definition of pi.  Please use the number I provided on the webpage."
        self.assertTrue(correct, message)
        
        
        correct = 'print(volume)' in source_code
        message = "It looks like you modified the last line."
        self.assertTrue(correct, message)
        
        
if __name__ == "__main__":
    tests = SphereTests()
    tests.test_default_case()