Skip to content

Commit f4ad2d1

Browse files
committed
#13 - TypeScript
1 parent 57a8feb commit f4ad2d1

File tree

1 file changed

+84
-0
lines changed

1 file changed

+84
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
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

Comments
 (0)