Cree una calculadora de cadenas simple con un solo método:
class StringCalculator {
int Add(string numbers);
}
El método puede tomar 1 o 2 números separados por comas y devolverá su suma. El método devuelve 0 cuando se pasa la cadena vacía.
Ejemplo:
Add("") // 0
Add("4") // 4
Add("1,2") // 3
Comience con el caso de prueba más simple de una cadena vacía y pase a 1 y dos números.
Permita que el método Agregar maneje una cantidad desconocida de números.
Ejemplo:
Add("1,2,3,4,5,6,7,8,9") // 45
Permita que el método Agregar reconozca nuevas líneas y comas como separadores. Los dos tipos de separadores se pueden utilizar indistintamente.
Concéntrese en el camino feliz: dado que este no es un código de producción, está bien si el código falla si se le proporciona una entrada no válida (por ejemplo ). "1,\n2"
Ejemplo:
Add("1\n2,3") // 6
Opcionalmente admite separadores personalizados. Para cambiar el separador, el comienzo de la cadena contendrá una línea separada similar a esta: //<separator>\n<numbers>
Ejemplo:
Add("//;\n1;2") // 3
Tenga en cuenta que todos los escenarios existentes aún deberían ser compatibles.
Llamar a Add con un número negativo generará una excepción y el negativo que se pasó. negatives not allowed
Si hay varios negativos, muéstrelos todos en el mensaje de excepción.
Ejemplo:
Add("1,-2,-3") // error: negatives not allowed: -2 -3
Se deben ignorar los números mayores que 1000.
Ejemplo:
Add("1001, 2") // 2
Los separadores pueden tener cualquier longitud si están entre corchetes.
Ejemplo:
Add("//[***]\n1***2***3") // 6
Permita múltiples separadores de un solo carácter como este: “//[delim1][delim2]\n”
Ejemplo:
Add("//[*][%]\n1*2%3") // 6
Maneja múltiples separadores con cualquier longitud de carácter.
Ejemplo:
Add("//[foo][bar]\n1foo2bar3") // 6
link de la kata: https://www.codurance.com/katas/string-calculator
Configuración básica para empezar a hacer una kata o aprender a hacer tests en los siguientes lenguajes:
- PHP con PHPUnit
- Javascript con Jest
- Typescript con Node
- Typescript con Deno
- Java con Junit y Mockito
- Scala con Munit y Scalacheck
- Kotlin con JUnit5 y MockK
- C# con xUnit (FluentAsertion) y NSubstitute (para mock)
- Go con testing (standard library)
- Instalar composer
curl -sS https://getcomposer.org/installer | php
composer install
(estando en la carpeta php)vendor/bin/phpunit
ocomposer test
- Instalar Node
npm install
(Estando en la carpeta javascript)npm test
- Instalar Deno
deno test
(Estando en la carpeta typescript)
- Instalar las dependencias y tests con Maven [mvn test]
- Ejecutar los tests con el IDE
sbt
(en la carpeta scala)~test
para ejecutar los test en hot reload
- Munit
- Scalacheck para testing basado en propiedades
- Instalar SDKMan
sdk install java 11.0.12-open
instala OpenJDKsdk install sbt
una vez instalado SDKMan
- Descargar Visual Studio Code
- Instalar para VS Code Metals
- Por consola: Puedes instalar dependencias y lanzar los tests con
gradlew test
- Usando IDE: Simplemente abre el proyecto desde el raiz de la plantilla Kotlin
- Instalar Microsoft Visual Studio Community 2022
- Abre el proyecto y se descargaran automáticamente los paquetes Nuguet necesarios
- Instalar python 3.x
- Una vez descargado el código fuente dentro de la carpeta */python/ creamos un virtual enviroment:
python3 -m venv env
- Activamos en virtual environment:
- windows:
.\env\Scripts\activate.bat
- linux/mac:
source env/bin/activate
pytest
para ejecutar los tests.
- Instalar Go
go test -v
(en la carpeta con el archivo xxx_test.go)