Python Qualis Doctests
Python Qualis Doctests
def isPalindrome(x):
"""
>>> isPalindrome(121)
True
>>> isPalindrome(344)
False
>>> isPalindrome(-121)
Traceback (most recent call last):
ValueError: x must be positive integer.
>>> isPalindrome("hello")
Traceback (most recent call last):
TypeError: x must be integer.
"""
try:
x = int(x)
temp=x
rev=0
if(x>0):
while(x>0):
dig=x%10
rev=rev*10+dig
x=x//10
if(temp==rev):
return True
else:
return False
elif(x<0):
raise TypeError
else:
raise ValueError
except ValueError:
raise ValueError("x must be positive integer")
except TypeError:
raise TypeError("x must be an integer")
Circle
class Circle:
def area(self):
# Define doctests for area method:
"""
>>> c1 = Circle(2.5)
>>> c1.area()
19.63
"""
# Define area functionality:
return round(math.pi*(self.radius**2),2)
def circumference(self):
# Define doctests for circumference method:
"""
>>> c1 = Circle(2.5)
>>> c1.circumference()
15.71
"""
# Define the circumference functionality below
return round((self.radius * 2 * math.pi),2)
# Define circumference functionality:
class TestCircleCreation(unittest.TestCase):
def test_creating_circle_with_numeric_radius(self):
# Define a circle 'c1' with radius 2.5, and check if
# the value of c1.radius is equal to 2.5 or not.
c1 = Circle(2.5)
self.assertEqual(c1.radius, 2.5)
def test_creating_circle_with_negative_radius(self):
# Define a circle 'c' with radius -2.5, and check
# if it raises a ValueError with the message
# "radius must be between 0 and 1000 inclusive".
with self.assertRaises(ValueError) as e:
c = Circle(-2.5)
self.assertEqual(str(e.exception), 'radius must be between 0 and 1000
inclusive')
def test_creating_circle_with_greaterthan_radius(self):
# Define a circle 'c' with radius 1000.1, and check
# if it raises a ValueError with the message
# "radius must be between 0 and 1000 inclusive".
with self.assertRaises(ValueError) as e:
c = Circle(1000.1)
self.assertEqual(str(e.exception), 'radius must be between 0 and 1000
inclusive')
def test_creating_circle_with_nonnumeric_radius(self):
# Define a circle 'c' with radius 'hello' and check
# if it raises a TypeError with the message
# "radius must be a number".
with self.assertRaises(TypeError) as e:
c = Circle('hello')
self.assertEqual(str(e.exception), 'radius must be a number')
class TestCircleArea(unittest.TestCase):
def test_circlearea_with_random_numeric_radius(self):
c1=Circle(2.5)
self.assertEqual(c1.area(),19.63)
def test_circlearea_with_min_radius(self):
c2=Circle(0)
self.assertEqual(c2.area(),0.0)
def test_circlearea_with_max_radius(self):
c3=Circle(1000.1)
#print(c3.area())
self.assertEqual(c3.area(),3142221.0)
class TestCircleCircumference(unittest.TestCase):
def test_circlecircum_with_random_numeric_radius(self):
c1 = Circle(2.5)
self.assertEqual(c1.circumference(),15.71)
def test_circlecircum_with_min_radius(self):
# Define a circle 'c2' with radius 0 and check if
# it's circumference is 0.
c2 = Circle(0)
self.assertEqual(c2.circumference(),0)
def test_circlecircum_with_max_radius(self):
# Define a circle 'c3' with radius 1000 and check if
# it's circumference is 6283.19.
c3 = Circle(1000)
self.assertEqual(c3.circumference(),6283.19)
try:
if not isinstance(radius, (int, float)):
raise TypeError
elif 1000 >=radius>=0:
self.radius=radius
else:
raise ValueError
except ValueError:
raise ValueError("radius must be between 0 and 1000 inclusive")
except TypeError:
raise TypeError("radius must be a number")