Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
108 changes: 95 additions & 13 deletions calctests.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,106 @@
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()
117 changes: 115 additions & 2 deletions calculator.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
import math


class Calculator:

def __init__(self):
Expand All @@ -7,6 +10,116 @@ 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

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 inv_ln(self,x):
return math.exp(x)

def pi(self):
return math.pi

def e(self):
return math.e

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

# add lots more methods to this calculator class.
def mclear(self):
memory=0
return memory
Loading