-
Realiza un fork del repositorio
github.com/curso-backend-web/intro-node.git
-
Clona el repositorio a tu PC desde TU USUARIO
-
Realiza el ejercicio, en este caso practicarás con objetos y clases.
-
Una vez completado lanza los siguientes comandos:
git add .
git commit -m "done"
git push
- Desde el repositorio crea un Pull Request con el nombre de la pareja en el subject del mensaje y el texto EJERCICIO COMPLETADO.
Este ejercicio se ha de completar mediante tests. Para los que no hayan tenido oportunidad de practicar con ellos, se acompaña una breve introducción al testing.
El testing es un proceso por el cual se ejecuta una aplicación para validar y verificar que se cumplen todos los requisitos técnicos, de negocio y de funcionamiento de un software.
El testing es un proceso, no una única actividad. Por tanto, el diseño de tests durante las fases iniciales del desarrollo de un producto puede ayudar a prevenir deficiencias en el código o en el propio diseño del producto.
En este ejercicio, se han creaado todos los test necesarios para obtener la solución, y se han de ejecutar todos ellos para construir el código que cumpla con los requisitos.
Los tests probarán que el código funciona en cualquier situación en las que se prevé que lo haga. También nos servirá para el diseño o la implementación de nuevas funcionalidades, de manera que los cambios que se hagan al código no rompan lo que ya está funcionando.
Jest es un framework creado por Facebook y mantenido por la comunidad con apoyo de Facebook. Es fácil de instalar y no requiere de una configuración muy compleja para poder añadirlo en nuestros proyectos.
Instala los packages npm:
npm install
starter-code/
├── test
│ └── sample.test.js
| └── sortedList.test.js
└─ package.json
└─ index.js
Trabajaremos con el fichero index.js
. Escribiremos la implementación de nuestra clase SortedList
.
La carpeta test
contiene todos los tests que se ejecutarán con Jest.
Para correr los tests ejecutamos: npm test
.
$ npm test
> [email protected] test
> node --experimental-vm-modules node_modules/jest/bin/jest.js
(node:58423) ExperimentalWarning: VM Modules is an experimental feature. This feature could change at any time
(Use `node --trace-warnings ...` to show where the warning was created)
PASS test/sortedList.test.js
SortedList
Constructor
✓ should create an empty SortedList (1 ms)
✓ should have a property items
✓ should have a property length
#add(x)
✓ should add a single value to SortedList (1 ms)
✓ should add a second value to SortedList, sorted (1 ms)
✓ should add a third value to SortedList, sorted (5 ms)
#get(i)
✓ should return an OutOfBounds error if there is no element in that position (4 ms)
✓ should return the element in that position (18 ms)
#max()
✓ should return an EmptyList error if there is no element in the list (1 ms)
✓ should return the max element in the list
#min()
✓ should return an EmptyList exception if there is no element in the list (1 ms)
✓ should return the min element in the list
#average()
✓ should return an EmptySortedList exception if there are no elements (1 ms)
✓ should return the average of elements in the array (1 ms)
sum()
✓ should return a EmptySortedList exception if there are no elements in the list
✓ should add(sum) all elements of the array if there are elements in the list
PASS test/sample.test.js
Sample Test
✓ should test that true === true (1 ms)
Test Suites: 2 passed, 2 total
Tests: 17 passed, 17 total
Snapshots: 0 total
Time: 0.317 s, estimated 1 s
Ran all test suites.
Hay que crear una clase que mantenga una lista ordenada de números, en orden ascendente.
La clase tendrá los siguientes métodos:
new SortedList
debería crear un nuevo objeto de la clase SortedList
.
El objeto tendría las propiedades items
y length
.
items
debe ser un array.length
debe contener el número de elementos de ese array.
El método add(x)
añade x
al array items
y lo ordena.
Este método obtiene el n-esimo
valor de la lista.
En este caso necesitarás también la propiedad length
que te proporciona el tamaño de la lista.
El método max()
devuelve el valor más alto del array.
El método min()
devuelve el menor valor de la lista.
El método average()
devuelve el valor medio del array.
El método sum()
devuelve la suma de todos los valores.