Skip to content

Commit 2ffa31b

Browse files
authored
Merge pull request mouredev#2570 from roswer13/challenge-13
#13 - Python
2 parents 804800e + 0c41b99 commit 2ffa31b

File tree

1 file changed

+122
-0
lines changed

1 file changed

+122
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
2+
import unittest
3+
from abc import ABC, abstractmethod
4+
5+
# EJERCICIO:
6+
# Crea una función que se encargue de sumar dos números y retornar
7+
# su resultado.
8+
# Crea un test, utilizando las herramientas de tu lenguaje, que sea
9+
# capaz de determinar si esa función se ejecuta correctamente.
10+
class Operation(ABC):
11+
@abstractmethod
12+
def calculate(self, a: int, b: int) -> int:
13+
pass
14+
15+
16+
class Sum(Operation):
17+
def calculate(self, a: int, b: int) -> int:
18+
return a + b
19+
20+
21+
class TestSum(unittest.TestCase):
22+
def setUp(self):
23+
self.sum = Sum()
24+
25+
def test_sum_number_possitive(self):
26+
# Arrange
27+
value1 = 1
28+
value2 = 2
29+
# Act
30+
expected = value1 + value2
31+
# Assert
32+
self.assertEqual(self.sum.calculate(value1, value2), expected)
33+
34+
def test_sum_number_negative(self):
35+
# Arrange
36+
value1 = -1
37+
value2 = -2
38+
# Act
39+
expected = value1 + value2
40+
# Assert
41+
self.assertEqual(self.sum.calculate(value1, value2), expected)
42+
43+
def test_sum_number_mixed(self):
44+
# Arrange
45+
value1 = -1
46+
value2 = 2
47+
# Act
48+
expected = value1 + value2
49+
# Assert
50+
self.assertEqual(self.sum.calculate(value1, value2), expected)
51+
52+
def test_sum_float_number(self):
53+
# Arrange
54+
value1 = 1.5
55+
value2 = 2.5
56+
# Act
57+
expected = value1 + value2
58+
# Assert
59+
self.assertEqual(self.sum.calculate(value1, value2), expected)
60+
61+
def test_sum_no_number(self):
62+
# Arrange
63+
value1 = "1"
64+
value2 = 2
65+
# Act
66+
# Assert
67+
self.assertRaises(TypeError, self.sum.calculate)
68+
69+
70+
# DIFICULTAD EXTRA (opcional):
71+
# Crea un diccionario con las siguientes claves y valores:
72+
# "name": "Tu nombre"
73+
# "age": "Tu edad"
74+
# "birth_date": "Tu fecha de nacimiento"
75+
# "programming_languages": ["Listado de lenguajes de programación"]
76+
# Crea dos test:
77+
# - Un primero que determine que existen todos los campos.
78+
# - Un segundo que determine que los datos introducidos son correctos.
79+
class TestUserData(unittest.TestCase):
80+
def setUp(self):
81+
self.key_name = "name"
82+
self.key_age = "age"
83+
self.key_birth_date = "birth_date"
84+
self.key_programming_languages = "programming_languages"
85+
86+
self.data = {
87+
"name": "Roswer",
88+
"age": 31,
89+
"birth_date": "1993-06-30",
90+
"programming_languages": ["Python", "Kotlin", "Dart"]
91+
}
92+
93+
def test_check_if_exits_all_keys(self):
94+
# Arrange
95+
keys_to_check = [self.key_name, self.key_age, self.key_birth_date, self.key_programming_languages]
96+
keys = self.data.keys()
97+
# Act
98+
# Assert
99+
self.assertTrue(all(key in keys for key in keys_to_check))
100+
self.assertTrue(len(keys) == len(keys_to_check))
101+
102+
def test_check_if_exits_all_keys_one_more(self):
103+
# Arrange
104+
self.data["extra_key"] = "Extra value"
105+
keys_to_check = [self.key_name, self.key_age, self.key_birth_date, self.key_programming_languages]
106+
keys = self.data.keys()
107+
# Act
108+
# Assert
109+
self.assertTrue(all(key in keys for key in keys_to_check))
110+
self.assertFalse(len(keys) == len(keys_to_check))
111+
112+
def test_check_type_data(self):
113+
# Arrange
114+
# Act
115+
# Assert
116+
self.assertTrue(type(self.data[self.key_name]) == str)
117+
self.assertTrue(type(self.data[self.key_age]) == int)
118+
self.assertTrue(type(self.data[self.key_birth_date]) == str)
119+
self.assertTrue(type(self.data[self.key_programming_languages]) == list)
120+
121+
if __name__ == '__main__':
122+
unittest.main()

0 commit comments

Comments
 (0)