Usuario:Luis.perez/sistemaspyaytozgz/testing kata
De WikiEducator
Contenido
Kata StringCalculator
En este ejercicio realizaremos una Kata conocida como "StringCalculator" para practicar con python y TDD
¿Qué es una Kata?
Una "Kata" es un ejercicio diseñado para mejorar las habilidades de programación mediante práctica y repetición. Los ejercicios son aparentemente sencillos, pero mediante su resolución se pueden aprender buenas técnicas de programación. Se anima a que sean resueltos aplicando técnicas como TDD (Test Driven Development) y refactorización contínua.
|
Enunciado de la kata
String Calculator:
- 1) Crea una calculadora que acepta strings con un método Add(string numbers) que devuelve int
- El metodo puede recibir 0, 1, o 2 números separados por comas, y devolverá su suma (para una cadena vacía devolverá 0) por ejemplo "" ó "1" ó "1,2"
- Empezar con el test más simple de cadena vacía, y entonces continuar con 1 y después dos números
- Recuerda resolver los problemas de la manera más simple, de tal modo que te obligue a pensar en tests en los que no habías reparado
- Recuerda refactorizar cada vez que pasas un test
- 2) Permitir que el método Add maneje una cantidad indeterminada de números
- 3) Permitir que el método Add maneje nuevas líneas entre números (enn lugar de comas)
- La siguiente cadena es correcta: "1\n2,3" (= 6)
- La siguiente no es correcta: "1,\n" (no se necesita testear, solo por aclaración)
- 4) Soportar diferentes delimitadores
- Para cambiar un delimitador, el principio de la cadena contendrá una línea separada al estilo: “//[delimitador]\n[numeros…]”. Por ejemplo “//;\n1;2” devolverá 3, y su delimitador es ';'
- La primera línea es opcional, todos los escenarios anteriores han de seguir soportandose.
- 5) Invocar Add con un número negativo lanzará una excepción "Negativos no permitidos", mostrando además el negativo que se pasó. Si hay múltiples negativos, mostrar únicamente los negativos.
- 6) Los números mayores que 1000 deberían ser ignorados, así que añadir 2 + 1001 = 2
- 7) Los delimitadores deben de ser de cualqueir longitud con el siguiente formato “//[delimitador]\n” por ejemplo: “//[***]\n1***2***3” debería devolver 6
- 8) Permitir múltiples delimitadores: “//[delim1][delim2]\n”. Por ejemplo “//[*][%]\n1*2%3” debería devolver 6.
- 9) Asegúrate de que también se pueden manejar multiples delimitadores de longitud mayor que 1.
Nota: Una posible resolución se encuentra en el propio repositorio de github, en https://github.com/neodoo/curso_python_dga_11/blob/master/inmersion/kata/solution/StringCalculator.py, aunque el objetivo del ejercicio es el proceso, no la solución.