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 PrintSphereVolumeRadius5Tests(unittest.TestCase):
    
    def test_default_case(self):
        function = main.print_sphere_volume_radius_5
        try:
            doc = function.__doc__
        except:
            doc = ""
        correct = doc.strip() != ""
        message = "docstring is blank."
        self.assertTrue(correct, message)

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

        
        regex = ".* radius 5 has .*"
        feedback = "Doesn't have the radius included in the output."
        correct = re.match(regex, output)
        self.assertTrue(correct, feedback)
        
        regex = "A sphere with radius 5 has volume [1234567890\.]* *\.?"
        feedback = "Text of the output is incorrect."
        correct = re.match(regex, output)
        self.assertTrue(correct, feedback)
        
        regex = "[A-Za-z ]* 5 [A-Za-z ]*523\.598775598298[79] *\.?"
        feedback = "Doesn't print out the correct volume."
        correct = re.match(regex, output)
        self.assertTrue(correct, feedback)

        correct = output.endswith('.')
        feedback = "Doesn't end with a period."
        self.assertTrue(correct, feedback)
        
        
if __name__ == "__main__":
    tests = PrintSphereVolumeRadius5Tests()
    tests.test_default_case()