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
21 changes: 14 additions & 7 deletions Part-1/wHATTA/Basics/Calculator.py
Original file line number Diff line number Diff line change
@@ -1,17 +1,24 @@
num1 = input("Enter you first number: ")
num2 = input("Enter you second number: ")
choice = input("Do you want to add(a) / substract(s) / mmultiply(m) / divide(d) ? ")
add = int(num1)+int(num2)
subs = int(num1)-int(num2)
mult = int(num1)*int(num2)
div = int(num1)/int(num2)
if choice == 'a' :
add = int(num1)+int(num2)
print("The addition is " + str(add))
elif choice == 's' :
subs = int(num1)-int(num2)
print("The substraction is " + str(subs))
elif choice == 'm' :
mult = int(num1)*int(num2)
print("The multipication is " + str(mult))
elif choice == 'd' :
print("The division is " + str(div))
input(""".............Thank you.............
Please press the ENTER button""")
if int(num2) == 0:
print("Cannot divide by zero")
else:
div = int(num1)/int(num2)
print("The division is " + str(div))

try:
input(""".............Thank you.............
Please press the ENTER button""")
except EOFError:
pass
45 changes: 45 additions & 0 deletions Part-1/wHATTA/Basics/test_calculator.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
import unittest
import subprocess
import os

class TestCalculator(unittest.TestCase):
def run_calculator(self, input_text):
script_path = os.path.join(os.path.dirname(__file__), 'Calculator.py')
process = subprocess.Popen(['python3', script_path], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
stdout, stderr = process.communicate(input=input_text)
return stdout, stderr, process.returncode

def test_addition(self):
stdout, stderr, returncode = self.run_calculator("10\n5\na\n")
self.assertEqual(returncode, 0)
self.assertIn("The addition is 15", stdout)

def test_addition_zero_division_avoided(self):
# Even if num2 is 0, addition should work and not crash
stdout, stderr, returncode = self.run_calculator("10\n0\na\n")
self.assertEqual(returncode, 0)
self.assertIn("The addition is 10", stdout)
self.assertEqual(stderr, "")

def test_subtraction(self):
stdout, stderr, returncode = self.run_calculator("10\n5\ns\n")
self.assertEqual(returncode, 0)
self.assertIn("The substraction is 5", stdout)

def test_multiplication(self):
stdout, stderr, returncode = self.run_calculator("10\n5\nm\n")
self.assertEqual(returncode, 0)
self.assertIn("The multipication is 50", stdout)

def test_division(self):
stdout, stderr, returncode = self.run_calculator("10\n5\nd\n")
self.assertEqual(returncode, 0)
self.assertIn("The division is 2.0", stdout)

def test_division_by_zero(self):
stdout, stderr, returncode = self.run_calculator("10\n0\nd\n")
self.assertEqual(returncode, 0)
self.assertIn("Cannot divide by zero", stdout)

if __name__ == '__main__':
unittest.main()