Skip to content

Commit 87af8b0

Browse files
committed
Add CA4 second question
1 parent 430197a commit 87af8b0

File tree

3 files changed

+47
-0
lines changed

3 files changed

+47
-0
lines changed

Baloot1/Reports/CA4.docx

47.2 KB
Binary file not shown.

Baloot1/Reports/Extras/CA4/main.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
def calculate_total_cost(quantity, unit_price, discount):
2+
if quantity <= 0 or unit_price <= 0:
3+
return "Invalid input"
4+
else:
5+
total_cost = quantity * unit_price * (1 - discount)
6+
return total_cost

Baloot1/Reports/Extras/CA4/test.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import unittest
2+
3+
from main import calculate_total_cost
4+
5+
INVALID_INPUT = "Invalid input"
6+
7+
A = [-1, 0, 1, 2]
8+
B = [-1, 0, 1]
9+
C = [-1, 0, 0.5, 1, 2]
10+
11+
12+
class TestCalculateTotalCost(unittest.TestCase):
13+
def test_invalid_inputs_should_fail(self):
14+
self.assertEqual(INVALID_INPUT, calculate_total_cost(A[0], B[0], C[0]))
15+
self.assertEqual(INVALID_INPUT, calculate_total_cost(A[0], B[2], C[1]))
16+
self.assertEqual(INVALID_INPUT, calculate_total_cost(A[0], B[1], C[2]))
17+
self.assertEqual(INVALID_INPUT, calculate_total_cost(A[0], B[0], C[3]))
18+
self.assertEqual(INVALID_INPUT, calculate_total_cost(A[0], B[0], C[4]))
19+
self.assertEqual(INVALID_INPUT, calculate_total_cost(A[1], B[1], C[0]))
20+
self.assertEqual(INVALID_INPUT, calculate_total_cost(A[1], B[0], C[1]))
21+
self.assertEqual(INVALID_INPUT, calculate_total_cost(A[1], B[2], C[2]))
22+
self.assertEqual(INVALID_INPUT, calculate_total_cost(A[1], B[1], C[3]))
23+
self.assertEqual(INVALID_INPUT, calculate_total_cost(A[1], B[1], C[4]))
24+
self.assertEqual(INVALID_INPUT, calculate_total_cost(A[2], B[1], C[1]))
25+
self.assertEqual(INVALID_INPUT, calculate_total_cost(A[2], B[0], C[2]))
26+
self.assertEqual(INVALID_INPUT, calculate_total_cost(A[3], B[0], C[0]))
27+
self.assertEqual(INVALID_INPUT, calculate_total_cost(A[3], B[1], C[4]))
28+
29+
def test_invalid_discount_should_fail(self): # This case is not covered in the main.py
30+
self.assertEqual(INVALID_INPUT, calculate_total_cost(A[2], B[2], C[0]))
31+
self.assertEqual(INVALID_INPUT, calculate_total_cost(A[2], B[2], C[4]))
32+
33+
def test_valid_inputs_should_pass(self):
34+
self.assertEqual(0, calculate_total_cost(A[2], B[2], C[3]))
35+
self.assertEqual(2, calculate_total_cost(A[3], B[2], C[1]))
36+
self.assertEqual(1, calculate_total_cost(A[3], B[2], C[2]))
37+
self.assertEqual(0, calculate_total_cost(A[3], B[2], C[3]))
38+
39+
40+
if __name__ == '__main__':
41+
unittest.main()

0 commit comments

Comments
 (0)