Skip to content

Commit 3908e2b

Browse files
authored
Merge pull request mouredev#6373 from eulogioep/main
#13 - java, javascript, php y typescript
2 parents d67596a + 7cb7862 commit 3908e2b

File tree

4 files changed

+277
-0
lines changed

4 files changed

+277
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
import java.util.Arrays;
2+
import java.util.HashMap;
3+
import java.util.Map;
4+
import org.junit.jupiter.api.Test;
5+
import static org.junit.jupiter.api.Assertions.*;
6+
7+
/**
8+
* Clase principal que contiene la función de suma y el diccionario de datos personales.
9+
*/
10+
public class eulogioep {
11+
12+
/**
13+
* Función que suma dos números y retorna el resultado.
14+
* @param a Primer número a sumar.
15+
* @param b Segundo número a sumar.
16+
* @return La suma de a y b.
17+
*/
18+
public static int suma(int a, int b) {
19+
return a + b;
20+
}
21+
22+
/**
23+
* Crea y retorna un diccionario (Map en Java) con datos personales.
24+
* @return Map con datos personales.
25+
*/
26+
public static Map<String, Object> crearDiccionario() {
27+
Map<String, Object> diccionario = new HashMap<>();
28+
diccionario.put("name", "Tu nombre");
29+
diccionario.put("age", 30);
30+
diccionario.put("birth_date", "1993-01-01");
31+
diccionario.put("programming_languages", Arrays.asList("Java", "Python", "JavaScript"));
32+
return diccionario;
33+
}
34+
35+
/**
36+
* Clase interna para las pruebas unitarias.
37+
*/
38+
public static class Tests {
39+
40+
@Test
41+
public void testSuma() {
42+
assertEquals(5, suma(2, 3), "La suma de 2 y 3 debería ser 5");
43+
assertEquals(0, suma(-1, 1), "La suma de -1 y 1 debería ser 0");
44+
assertEquals(-5, suma(-2, -3), "La suma de -2 y -3 debería ser -5");
45+
}
46+
47+
@Test
48+
public void testExistenciaCamposDiccionario() {
49+
Map<String, Object> diccionario = crearDiccionario();
50+
assertTrue(diccionario.containsKey("name"), "El diccionario debe contener la clave 'name'");
51+
assertTrue(diccionario.containsKey("age"), "El diccionario debe contener la clave 'age'");
52+
assertTrue(diccionario.containsKey("birth_date"), "El diccionario debe contener la clave 'birth_date'");
53+
assertTrue(diccionario.containsKey("programming_languages"), "El diccionario debe contener la clave 'programming_languages'");
54+
}
55+
56+
@Test
57+
public void testDatosCorrectosDiccionario() {
58+
Map<String, Object> diccionario = crearDiccionario();
59+
assertEquals("Tu nombre", diccionario.get("name"), "El nombre debe ser 'Tu nombre'");
60+
assertTrue(diccionario.get("age") instanceof Integer, "La edad debe ser un entero");
61+
assertTrue(((String) diccionario.get("birth_date")).matches("\\d{4}-\\d{2}-\\d{2}"), "La fecha de nacimiento debe tener el formato YYYY-MM-DD");
62+
assertTrue(diccionario.get("programming_languages") instanceof java.util.List, "Los lenguajes de programación deben ser una lista");
63+
assertTrue(((java.util.List<?>) diccionario.get("programming_languages")).size() > 0, "La lista de lenguajes de programación no debe estar vacía");
64+
}
65+
}
66+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
// Importamos la biblioteca de pruebas Jest
2+
const assert = require('assert');
3+
4+
/**
5+
* Función que suma dos números y retorna el resultado.
6+
* @param {number} a Primer número a sumar.
7+
* @param {number} b Segundo número a sumar.
8+
* @return {number} La suma de a y b.
9+
*/
10+
function suma(a, b) {
11+
return a + b;
12+
}
13+
14+
/**
15+
* Crea y retorna un objeto con datos personales.
16+
* @return {Object} Objeto con datos personales.
17+
*/
18+
function crearObjeto() {
19+
return {
20+
name: "Tu nombre",
21+
age: 30,
22+
birth_date: "1993-01-01",
23+
programming_languages: ["JavaScript", "Python", "Java"]
24+
};
25+
}
26+
27+
// Pruebas unitarias
28+
describe('Pruebas de la función suma', () => {
29+
test('Suma de 2 y 3 debería ser 5', () => {
30+
assert.strictEqual(suma(2, 3), 5);
31+
});
32+
33+
test('Suma de -1 y 1 debería ser 0', () => {
34+
assert.strictEqual(suma(-1, 1), 0);
35+
});
36+
37+
test('Suma de -2 y -3 debería ser -5', () => {
38+
assert.strictEqual(suma(-2, -3), -5);
39+
});
40+
});
41+
42+
describe('Pruebas del objeto de datos personales', () => {
43+
const objeto = crearObjeto();
44+
45+
test('El objeto debe contener todas las claves requeridas', () => {
46+
assert(objeto.hasOwnProperty('name'), "El objeto debe contener la clave 'name'");
47+
assert(objeto.hasOwnProperty('age'), "El objeto debe contener la clave 'age'");
48+
assert(objeto.hasOwnProperty('birth_date'), "El objeto debe contener la clave 'birth_date'");
49+
assert(objeto.hasOwnProperty('programming_languages'), "El objeto debe contener la clave 'programming_languages'");
50+
});
51+
52+
test('Los datos en el objeto deben ser correctos', () => {
53+
assert.strictEqual(objeto.name, "Tu nombre", "El nombre debe ser 'Tu nombre'");
54+
assert(typeof objeto.age === 'number', "La edad debe ser un número");
55+
assert(/^\d{4}-\d{2}-\d{2}$/.test(objeto.birth_date), "La fecha de nacimiento debe tener el formato YYYY-MM-DD");
56+
assert(Array.isArray(objeto.programming_languages), "Los lenguajes de programación deben ser un array");
57+
assert(objeto.programming_languages.length > 0, "La lista de lenguajes de programación no debe estar vacía");
58+
});
59+
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
<?php
2+
3+
/**
4+
* Función que suma dos números y retorna el resultado.
5+
* @param int|float $a Primer número a sumar.
6+
* @param int|float $b Segundo número a sumar.
7+
* @return int|float La suma de a y b.
8+
*/
9+
function suma($a, $b) {
10+
return $a + $b;
11+
}
12+
13+
/**
14+
* Crea y retorna un array asociativo con datos personales.
15+
* @return array Array asociativo con datos personales.
16+
*/
17+
function crearArrayAsociativo() {
18+
return [
19+
"name" => "Tu nombre",
20+
"age" => 30,
21+
"birth_date" => "1993-01-01",
22+
"programming_languages" => ["PHP", "JavaScript", "Python"]
23+
];
24+
}
25+
26+
// Incluimos PHPUnit para las pruebas
27+
use PHPUnit\Framework\TestCase;
28+
29+
/**
30+
* Clase de pruebas unitarias para las funciones suma y crearArrayAsociativo.
31+
*/
32+
class PruebasUnitarias extends TestCase
33+
{
34+
/**
35+
* Prueba la función suma con varios casos.
36+
*/
37+
public function testSuma()
38+
{
39+
$this->assertEquals(5, suma(2, 3), "La suma de 2 y 3 debería ser 5");
40+
$this->assertEquals(0, suma(-1, 1), "La suma de -1 y 1 debería ser 0");
41+
$this->assertEquals(-5, suma(-2, -3), "La suma de -2 y -3 debería ser -5");
42+
}
43+
44+
/**
45+
* Prueba la existencia de todas las claves en el array asociativo.
46+
*/
47+
public function testExistenciaClaves()
48+
{
49+
$array = crearArrayAsociativo();
50+
$this->assertArrayHasKey('name', $array, "El array debe contener la clave 'name'");
51+
$this->assertArrayHasKey('age', $array, "El array debe contener la clave 'age'");
52+
$this->assertArrayHasKey('birth_date', $array, "El array debe contener la clave 'birth_date'");
53+
$this->assertArrayHasKey('programming_languages', $array, "El array debe contener la clave 'programming_languages'");
54+
}
55+
56+
/**
57+
* Prueba que los datos en el array asociativo son correctos.
58+
*/
59+
public function testDatosCorrectos()
60+
{
61+
$array = crearArrayAsociativo();
62+
$this->assertEquals("Tu nombre", $array['name'], "El nombre debe ser 'Tu nombre'");
63+
$this->assertIsInt($array['age'], "La edad debe ser un entero");
64+
$this->assertMatchesRegularExpression('/^\d{4}-\d{2}-\d{2}$/', $array['birth_date'], "La fecha de nacimiento debe tener el formato YYYY-MM-DD");
65+
$this->assertIsArray($array['programming_languages'], "Los lenguajes de programación deben ser un array");
66+
$this->assertNotEmpty($array['programming_languages'], "La lista de lenguajes de programación no debe estar vacía");
67+
}
68+
}
69+
70+
?>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
// Definimos un tipo para las funciones matemáticas
2+
type MathFunction = (a: number, b: number) => number;
3+
4+
/**
5+
* Función que suma dos números y retorna el resultado.
6+
* @param a Primer número a sumar.
7+
* @param b Segundo número a sumar.
8+
* @returns La suma de a y b.
9+
*/
10+
const suma: MathFunction = (a, b) => {
11+
return a + b;
12+
};
13+
14+
/**
15+
* Enum para los lenguajes de programación
16+
*/
17+
enum ProgrammingLanguage {
18+
TypeScript = "TypeScript",
19+
JavaScript = "JavaScript",
20+
Python = "Python"
21+
}
22+
23+
/**
24+
* Interfaz que define la estructura del objeto de datos personales.
25+
*/
26+
interface DatosPersonales {
27+
readonly name: string;
28+
age: number;
29+
birth_date: string;
30+
programming_languages: ProgrammingLanguage[];
31+
}
32+
33+
/**
34+
* Crea y retorna un objeto con datos personales.
35+
* @returns Objeto con datos personales.
36+
*/
37+
function crearObjeto(): DatosPersonales {
38+
return {
39+
name: "Tu nombre",
40+
age: 30,
41+
birth_date: "1993-01-01",
42+
programming_languages: [ProgrammingLanguage.TypeScript, ProgrammingLanguage.JavaScript, ProgrammingLanguage.Python]
43+
};
44+
}
45+
46+
// Pruebas unitarias (usando una sintaxis similar a Jest, pero sin importar la librería)
47+
describe('Pruebas de la función suma', () => {
48+
test('Suma de 2 y 3 debería ser 5', () => {
49+
expect(suma(2, 3)).toBe(5);
50+
});
51+
52+
test('Suma de -1 y 1 debería ser 0', () => {
53+
expect(suma(-1, 1)).toBe(0);
54+
});
55+
56+
test('Suma de -2 y -3 debería ser -5', () => {
57+
expect(suma(-2, -3)).toBe(-5);
58+
});
59+
});
60+
61+
describe('Pruebas del objeto de datos personales', () => {
62+
const objeto: DatosPersonales = crearObjeto();
63+
64+
test('El objeto debe contener todas las propiedades requeridas', () => {
65+
expect(objeto).toHaveProperty('name');
66+
expect(objeto).toHaveProperty('age');
67+
expect(objeto).toHaveProperty('birth_date');
68+
expect(objeto).toHaveProperty('programming_languages');
69+
});
70+
71+
test('Los datos en el objeto deben ser correctos', () => {
72+
expect(objeto.name).toBe("Tu nombre");
73+
expect(typeof objeto.age).toBe('number');
74+
expect(objeto.birth_date).toMatch(/^\d{4}-\d{2}-\d{2}$/);
75+
expect(Array.isArray(objeto.programming_languages)).toBe(true);
76+
expect(objeto.programming_languages.length).toBeGreaterThan(0);
77+
expect(objeto.programming_languages).toContain(ProgrammingLanguage.TypeScript);
78+
});
79+
});
80+
81+
// Nota: Las funciones 'describe', 'test', 'expect', etc. no están definidas aquí.
82+
// En un entorno real, necesitarías importar estas funciones de una biblioteca de pruebas.

0 commit comments

Comments
 (0)