Skip to content
113 changes: 100 additions & 13 deletions calctests.py
Original file line number Diff line number Diff line change
@@ -1,25 +1,112 @@
#From Efe

import unittest
from calculator import Calculator


class TestStringMethods(unittest.TestCase):
class TestCalculator(unittest.TestCase):
""" When the test case is executed,
setUp() method gets executed first."""

def test_add(self):
c = Calculator()
self.assertEqual(c.add(3, 3), 6)
def setUp(self):
self.calculator = Calculator()

def test_add2(self):
c = Calculator()
self.assertEqual(c.add(12, -10), 2)
""" test each method in the Calculator class.
assertEqual checks if the Calculator methods returns
the expected value."""

def test_add3(self):
c = Calculator()
self.assertEqual(c.add(5, 8), 13)
def test_add(self):
self.assertEqual(self.calculator.add(4, 7), 11)

def test_sub(self):
c = Calculator()
self.assertEqual(c.sub(9, 3), 6)
self.assertEqual(self.calculator.sub(10, 5), 5)

def test_mult(self):
self.assertEqual(self.calculator.mult(3, 7), 21)

def test_div(self):
self.assertEqual(self.calculator.div(10, 2), 5)

def test_sq(self):
self.assertEqual(self.calculator.sq(2), 4)

def test_sqrt(self):
self.assertEqual(self.calculator.sqrt(4), 2)

def test_varexp(self):
self.assertEqual(self.calculator.varexp(10, 2), 100)

def test_inverse(self):
self.assertEqual(self.calculator.inverse(10), 0.1)

def test_invert_sign(self):
self.assertEqual(self.calculator.invert_sign(10), -10)

def test_sin_deg(self):
self.assertEqual(self.calculator.sin_deg(45), 0.7071067811865475)

def test_sin_rad(self):
self.assertEqual(self.calculator.sin_rad(45), 0.8509035245341184)

def test_cos_deg(self):
self.assertEqual(self.calculator.cos_deg(45), 0.7071067811865476)

def test_cos_rad(self):
self.assertEqual(self.calculator.cos_rad(45), 0.5253219888177297)

def test_tan_deg(self):
self.assertEqual(self.calculator.tan_deg(45), 0.9999999999999999)

def test_tan_rad(self):
self.assertEqual(self.calculator.tan_rad(45), 1.6197751905438615)

def test_inv_sin_deg(self):
self.assertEqual(self.calculator.inv_sin_deg(45), 0.7071067811865475)

def test_inv_sin_rad(self):
self.assertEqual(self.calculator.inv_sin_rad(45), 0.8509035245341184)

def test_inv_cos_deg(self):
self.assertEqual(self.calculator.inv_cos_deg(45), 0.7071067811865476)

def test_inv_cos_rad(self):
self.assertEqual(self.calculator.inv_cos_rad(45), 0.5253219888177297)

def test_inv_tan_deg(self):
self.assertEqual(self.calculator.inv_tan_deg(45), 0.9999999999999999)

def test_inv_tan_rad(self):
self.assertEqual(self.calculator.inv_tan_rad(45), 1.6197751905438615)

def test_trig_units_mode_deg_to_rad(self):
self.assertEqual(self.calculator.trig_units_mode_deg_to_rad(45), 0.7853981633974483)

def test_trig_units_mode_rad_to_deg(self):
self.assertEqual(self.calculator.trig_units_mode_rad_to_deg(45), 2578.3100780887044)

def test_factorial(self):
self.assertEqual(self.calculator.factorial(5), 120)

def test_log(self):
self.assertEqual(self.calculator.log(45, 10), 1.6532125137753435)

def test_inverse_log(self):
self.assertEqual(self.calculator.inverse_log(3), 1000)

def test_inv_ln(self):
self.assertEqual(self.calculator.inv_ln(3), 20.085536923187668)

def test_pi(self):
self.assertEqual(self.calculator.pi(), 3.141592653589793)

def test_e(self):
self.assertEqual(self.calculator.e(), 2.718281828459045)



if __name__ == '__main__':
""" runs the test case TestCalculator. executes each test method
defined in the class and gives us the result."""
if __name__ == "__main__":
unittest.main()
TestCalculator.py
4 KB
129 changes: 127 additions & 2 deletions calculator.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,137 @@
import math
class Calculator:

def __init__(self):
memory = 0.0
pass

def add(self, x, y):
return x + y

def sub(self, x, y):
return 0
return x - y

def mult(self, x, y):
return x * y

def div(self, x, y):
if y == 0:
print(Err)
return x / y

def sq(self, x):
return x**2

def sqrt(self, x):
return x**(1/2)

def varexp(self, x, y):
return x**y

def inverse(self, x):
return 1 / x

def invert_sign(self, x):
return x * -1


# added by KB

def switchDisplayMode(self,string_mode,x):
"""
Switch display mode (binary, octal, decimal, hexadecimal)
switchDisplayMode(String mode) should set the display to the mode given
:param string_mode:
:return:
"""
if (string_mode == 'bin'):
return str(bin(int(x)).replace("0b", ""))

elif (string_mode == 'dec'):
return str(round(float(x), 2))

elif (string_mode == 'oct'):
return str(oct(int(x)).replace("0o", ""))

elif (string_mode == 'hex'):
return str(hex(int(x)).replace("0x", ""))

else:
return str('invalid selection')

def sin_deg(self, x):
x=math.radians(x)
return math.sin(x)

def sin_rad(self, x):
return math.sin(x)

def cos_deg(self, x):
return math.cos(math.radians(x))

def cos_rad(self, x):
return math.cos(x)

def tan_deg(self, x):
return math.tan(math.radians(x))

def tan_rad(self, x):
return math.tan(x)

def inv_sin_deg(self, x):
return math.sin(math.radians(x))

def inv_sin_rad(self, x):
return math.sin(x)

def inv_cos_deg(self, x):
return math.cos(math.radians(x))

def inv_cos_rad(self, x):
return math.cos(x)

def inv_tan_deg(self, x):
return math.tan(math.radians(x))

def inv_tan_rad(self, x):
return math.tan(x)

def trig_units_mode_deg_to_rad(self, x):
return math.radians(x)

def trig_units_mode_rad_to_deg(self, x):
return math.degrees(x)

def factorial(self,x):
return math.factorial(x)

def log(self, x, base):
return math.log(x,base)

def inverse_log(self,x):
return 10**x

def ln(self, x):
return math.log(x)

def inv_ln(self,x):
return math.exp(x)

#def logTen(self, self.state):
#return math.log10(self.state)

def pi(self):
return math.pi

def e(self):
return math.e

def madd(self, x, memory):
memory = x + memory
return memory

def mclear(self):
memory=0
return memory


# add lots more methods to this calculator class.
Loading