Programación con TDD: Ejercicios FizzBuzz y Números Romanos

Clase 15 de 24Curso Básico de Testing en Java

FizzBuzz

Para practicar TDD, realizaremos este ejercicio clásico.

Usando TDD (empieza por los tests), implementa una función que dado un número: Si el número es divisible por 3, retorna “Fizz” Si el número es divisible por 5, retorna “Buzz” Si el número es divisible por 3 y por 5, retorna “FizzBuzz” En otro caso, retorna el mismo número

public class FizzBuzz { public static String fizzBuzz(int n) { ... } }

Por ejemplo, ve escribiendo estos tests. Tras cada test, escribe el código mínimo necesario para que los tests pasen, y sigue con el siguiente test.

fizzBuzz(3)"Fizz" fizzBuzz(6)"Fizz" fizzBuzz(5)"Buzz" fizzBuzz(10)"Buzz" fizzBuzz(15)"FizzBuzz" fizzBuzz(30)"FizzBuzz" fizzBuzz(2)"2" fizzBuzz(16)"16"

Reto extra: Números Romanos

Como extra, prueba este otro ejercicio. Anímate a intentarlo. ¡Te va a hacer pensar!

Usando TDD, implementa una función que convierta un número en el equivalente romano.

public class RomanNumerals { public static String arabicToRoman(int n) { ... } }

Por ejemplo, ve escribiendo estos tests. Tras cada test, escribe el código mínimo necesario para que los tests pasen, y sigue con el siguiente test.

arabicToRoman(1)"I" arabicToRoman(2)"II" arabicToRoman(3)"III" arabicToRoman(5)"V" arabicToRoman(6)"VI" arabicToRoman(7)"VII" arabicToRoman(10)"X" arabicToRoman(11)"XI" arabicToRoman(15)"XV" arabicToRoman(16)"XVI" arabicToRoman(50)"L" arabicToRoman(51)"LI" arabicToRoman(55)"LV" arabicToRoman(56)"LVI" arabicToRoman(60)"LX" arabicToRoman(70)"LXX" arabicToRoman(80)"LXXX" arabicToRoman(81)"LXXXI" arabicToRoman(85)"LXXXV" arabicToRoman(86)"LXXXVI" arabicToRoman(126)"CXXVI" arabicToRoman(2507)"MMDVII"

Puedes añadir más tests.

En los siguientes tests, probamos los casos en los que hay símbolos que restan, porque van a la izquierda de un símbolo mayor:

arabicToRoman(4)"IV" arabicToRoman(9)"IX" arabicToRoman(14)"XIV" arabicToRoman(19)"XIX" arabicToRoman(24)"XXIV" arabicToRoman(40)"XL" arabicToRoman(49)"XLIX" arabicToRoman(90)"XC" arabicToRoman(99)"XCIX" arabicToRoman(400)"CD" arabicToRoman(900)"CM"

Puedes añadir más tests.

Ten en cuenta que el símbolo I puede restar a V y X. El símbolo X puede restar a L y C. El símbolo C puede restar a D y M.

Dicho de manera más simple, las combinaciones en las que hay una resta son las siguientes: IV IX XL XC CD CM.