1
+ const assert = require ( 'assert' )
2
+ /*
3
+ * EJERCICIO:
4
+ * Crea una función que se encargue de sumar dos números y retornar
5
+ * su resultado.
6
+ * Crea un test, utilizando las herramientas de tu lenguaje, que sea
7
+ * capaz de determinar si esa función se ejecuta correctamente.
8
+ */
9
+
10
+ function addition ( a : number , b : number ) : number {
11
+ return a + b
12
+ }
13
+
14
+ try {
15
+ assert . equal ( addition ( 1 , 2 ) , 3 )
16
+ console . log ( `Test 1: pasó. Resultado de la suma: ${ addition ( 1 , 2 ) } ` )
17
+ } catch ( error ) {
18
+ console . error ( `Test 1: falló. Error: ${ error . message } ` )
19
+ }
20
+
21
+ /*
22
+ * Crea un diccionario con las siguientes claves y valores:
23
+ * "name": "Tu nombre"
24
+ * "age": "Tu edad"
25
+ * "birth_date": "Tu fecha de nacimiento"
26
+ * "programming_languages": ["Listado de lenguajes de programación"]
27
+ * Crea dos test:
28
+ * - Un primero que determine que existen todos los campos.
29
+ * - Un segundo que determine que los datos introducidos son correctos.
30
+ */
31
+
32
+ interface Person {
33
+ name : string ;
34
+ age : number ;
35
+ birthDate : Date ;
36
+ programmingLanguages : string [ ] ;
37
+ }
38
+
39
+ const person : Person = {
40
+ name : 'Victor' ,
41
+ age : 21 ,
42
+ birthDate : new Date ( 2002 , 11 , 17 ) ,
43
+ programmingLanguages : [ 'TypeScript' , 'JavaScript' , 'Python' ]
44
+ } ;
45
+
46
+ function validateStructure ( expected : Person , actual : Person ) : void {
47
+ const expectedKeys = Object . keys ( expected ) ;
48
+ const actualKeys = Object . keys ( actual ) ;
49
+ assert . strictEqual ( expectedKeys . length , actualKeys . length , 'Las estructuras no tienen el mismo número de claves.' ) ;
50
+ expectedKeys . forEach ( key => {
51
+ assert . ok ( actual . hasOwnProperty ( key ) , `La propiedad "${ key } " falta en el objeto real.` ) ;
52
+ } ) ;
53
+ }
54
+
55
+ function validateValues ( expected : Person , actual : Person ) : void {
56
+ const expectedKeys = Object . keys ( expected ) ;
57
+ expectedKeys . forEach ( key => {
58
+ assert . strictEqual ( typeof actual [ key ] , typeof expected [ key ] , `El tipo de la propiedad "${ key } " no coincide.` ) ;
59
+ } ) ;
60
+ }
61
+
62
+ try {
63
+ validateStructure ( {
64
+ name : '' ,
65
+ age : 0 ,
66
+ birthDate : new Date ( 2002 , 11 , 17 ) ,
67
+ programmingLanguages : [ '' ]
68
+ } , person ) ;
69
+ console . log ( 'Test 1: pasó. La estructura es correcta.' ) ;
70
+ } catch ( error ) {
71
+ console . error ( 'Test 1: falló. Error: ' , error . message ) ;
72
+ }
73
+
74
+ try {
75
+ validateValues ( {
76
+ name : '' ,
77
+ age : 0 ,
78
+ birthDate : new Date ( 2002 , 11 , 17 ) ,
79
+ programmingLanguages : [ '' ]
80
+ } , person ) ;
81
+ console . log ( 'Test 2: pasó. Los tipos son correctos.' ) ;
82
+ } catch ( error ) {
83
+ console . error ( 'Test 2: falló. Error: ' , error . message ) ;
84
+ }
0 commit comments