Skip to content

Commit c4a66f7

Browse files
authored
Merge pull request mouredev#6415 from Glitzypanic/solucion
#12 - javaScript
2 parents 4910ffe + 6c891d3 commit c4a66f7

File tree

2 files changed

+162
-0
lines changed

2 files changed

+162
-0
lines changed
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
/*
2+
* IMPORTANTE: Sólo debes subir el fichero de código como parte del ejercicio.
3+
*
4+
* EJERCICIO:
5+
* Desarrolla un programa capaz de crear un archivo XML y JSON que guarde los
6+
* siguientes datos (haciendo uso de la sintaxis correcta en cada caso):
7+
* - Nombre
8+
* - Edad
9+
* - Fecha de nacimiento
10+
* - Listado de lenguajes de programación
11+
* Muestra el contenido de los archivos.
12+
* Borra los archivos.
13+
*
14+
* DIFICULTAD EXTRA (opcional):
15+
* Utilizando la lógica de creación de los archivos anteriores, crea un
16+
* programa capaz de leer y transformar en una misma clase custom de tu
17+
* lenguaje los datos almacenados en el XML y el JSON.
18+
* Borra los archivos.
19+
*/
20+
21+
const fs = require("fs/promises");
22+
23+
async function main() {
24+
const data = {
25+
nombre: "Juan",
26+
edad: 30,
27+
fechaNacimiento: "1994-05-15",
28+
lenguajes: ["JavaScript", "Python", "Java"],
29+
};
30+
31+
try {
32+
// Crear JSON
33+
const jsonData = JSON.stringify(data, null, 2);
34+
await fs.writeFile("datos.json", jsonData);
35+
36+
// Crear XML
37+
const xmlData = `
38+
<persona>
39+
<nombre>${data.nombre}</nombre>
40+
<edad>${data.edad}</edad>
41+
<fechaNacimiento>${data.fechaNacimiento}</fechaNacimiento>
42+
<lenguajes>
43+
${data.lenguajes.map((lang) => `<lenguaje>${lang}</lenguaje>`).join("")}
44+
</lenguajes>
45+
</persona>`;
46+
await fs.writeFile("datos.xml", xmlData);
47+
48+
// Leer y mostrar contenido
49+
const readJsonData = await fs.readFile("datos.json", "utf-8");
50+
console.log("Contenido del archivo JSON:", readJsonData);
51+
52+
const readXmlData = await fs.readFile("datos.xml", "utf-8");
53+
console.log("Contenido del archivo XML:", readXmlData);
54+
55+
// Borrar archivos
56+
await fs.unlink("datos.json");
57+
await fs.unlink("datos.xml");
58+
console.log("Archivos borrados con éxito.");
59+
} catch (error) {
60+
console.error("Error:", error);
61+
}
62+
}
63+
64+
main();
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
/*
2+
* EJERCICIO:
3+
* Crea una función que se encargue de sumar dos números y retornar
4+
* su resultado.
5+
* Crea un test, utilizando las herramientas de tu lenguaje, que sea
6+
* capaz de determinar si esa función se ejecuta correctamente.
7+
*
8+
* DIFICULTAD EXTRA (opcional):
9+
* Crea un diccionario con las siguientes claves y valores:
10+
* "name": "Tu nombre"
11+
* "age": "Tu edad"
12+
* "birth_date": "Tu fecha de nacimiento"
13+
* "programming_languages": ["Listado de lenguajes de programación"]
14+
* Crea dos test:
15+
* - Un primero que determine que existen todos los campos.
16+
* - Un segundo que determine que los datos introducidos son correctos.
17+
*/
18+
19+
function sum(a, b) {
20+
return a + b;
21+
}
22+
23+
function sumTest() {
24+
const resultado = sum(3, 5);
25+
const esperado = 8;
26+
27+
if (resultado !== esperado) {
28+
throw new Error(`Error: ${resultado} es distinto de ${esperado}`);
29+
} else {
30+
console.log("!Test OK");
31+
}
32+
}
33+
34+
try {
35+
sumTest();
36+
} catch (error) {
37+
console.error(error.message);
38+
}
39+
40+
const user = {
41+
name: "Jose",
42+
age: 25,
43+
birth_date: "05/11/98",
44+
programming_languages: ["javaScript", "Python", "Go", "C#"],
45+
};
46+
47+
function userTest() {
48+
const userDate = ["name", "age", "birth_date", "programming_languages"];
49+
50+
userDate.forEach((element) => {
51+
if (!(element in user)) {
52+
throw new Error(`Error: El campo ${element} no existe en el objeto user`);
53+
}
54+
55+
console.log("Todos los campos existen en el objeto user!");
56+
});
57+
}
58+
59+
function dataTest() {
60+
if (typeof user.name !== "string" || user.name.trim() === "") {
61+
throw new Error(
62+
`Error: el campo ${user.name} deber ser un string no vacio.`
63+
);
64+
}
65+
66+
if (typeof user.age !== "number" || user.age < 0) {
67+
throw new Error(`Error: el campo ${user.age} debe ser un numero valido`);
68+
}
69+
70+
if (typeof user.birth_date !== "string" || user.name.trim() === "") {
71+
throw new Error(
72+
`Error: el campo ${user.birth_date} deber ser un string no vacio.`
73+
);
74+
}
75+
76+
if (!Array.isArray(user.programming_languages)) {
77+
throw new Error(
78+
`Error: el campo ${user.programming_languages} debe ser un array.`
79+
);
80+
}
81+
82+
user.programming_languages.forEach((language) => {
83+
if (typeof language !== "string") {
84+
throw new Error(
85+
`Error: Cada lenguaje en ${user.programming_languages} debe ser un string`
86+
);
87+
}
88+
});
89+
90+
console.log("Datos correctos");
91+
}
92+
93+
try {
94+
userTest();
95+
dataTest();
96+
} catch (err) {
97+
console.error(err.message);
98+
}

0 commit comments

Comments
 (0)