Desarrollando un juego de mesa – Hex (parte 5)

Posts relacionados: Desarrollando un juego de mesa – Hex (parte 1)
Desarrollando un juego de mesa – Hex (parte 2)
Desarrollando un juego de mesa – Hex (parte 3)
Desarrollando un juego de mesa – Hex (parte 4)

Una vez que la lógica del juego está armada, comienzo con el desarrollo de las "interfaces gráficas". La primer versión, es una aplicación de Consola, así que agrego un proyecto nuevo (BoardGame.Hex.UI.ConsoleUI). Como la idea es hacer TDD (Siiii, me re copé con esto, y quiero hacer también de la UI... ¿porqué? ¿no debería?) también agrego un proyecto llamado BoardGame.Hex.UI.ConsoleUI.UnitTest.

Armar los Test para la consola, me dejó medio desorientado, pero, después de pensar un rato e investigar sobre como escribir test unitarios para consola, armé los siguientes dentro de un test llamado ConsoleInterpreterTest:

En este punto, comencé a notar que estaba comenzando a dejar muchos métodos como públicos dentro de una clase llamada ConsoleInterpreter para poder testearlos, lo cual considero incorrecto... así que, con todos los tests en verde, comencé a dividir las responsabilidades, dejando en ConsoleInterpreter todo lo que sea uso de consola (algo genérico que podría reutilizarse para cualquier aplicación que sea necesario utilizar desde consola), y creé una clase nueva ConsoleGameHex que representa la consola de GameHex y dividí los test (y agregué algunos nuevos que fuí necesitando) de la siguiente manera:

Actualización 21-06-2011 07:45
- Cobertura de BoardGame.Hex mediante tests: 100%
- Cobertura de ejecución de BoardGame.Hex.UnitTest: 100%
- Cobertura de BoardGame.Hex.UI.ConsoleUI mediante tests: 95%
- Cobertura de ejecución de BoardGame.Hex.UI.ConsoleUI.UnitTest: 100%
Actualización 23-06-2011 19:40
- Cobertura de BoardGame.Hex mediante tests: 100%
- Cobertura de ejecución de BoardGame.Hex.UnitTest: 100%
- Cobertura de BoardGame.Hex.UI.ConsoleUI mediante tests: 100%
- Cobertura de ejecución de BoardGame.Hex.UI.ConsoleUI.UnitTest: 100%