El presente es un proyecto dado como Challenge de un proceso de selección de Broker online
Tenemos un método que genera un reporte en base a una colección de formas geométricas, procesando algunos datos para presentar información extra. La firma del método es:
public static string Imprimir(List<FormaGeometrica> formas, int idioma)Al mismo tiempo, encontramos muy díficil el poder agregar o bien una nueva forma geométrica, o imprimir el reporte en otro idioma. Nos gustaría poder dar soporte para que el usuario pueda agregar otros tipos de formas u obtener el reporte en otros idiomas, pero extender la funcionalidad del código es muy doloroso. ¿Nos podrías dar una mano a refactorear la clase FormaGeometrica? Dentro del código encontrarás un TODO con nuevos requerimientos a satisfacer una vez completada la refactorización.
Acompañando al proyecto encontrarás una serie de tests unitarios (librería NUnit) que describen el comportamiento del método Imprimir. Se puede modificar cualquier cosa del código y de los tests, con la única condición que los tests deben pasar correctamente al entregar la solución.
Se agradece también la inclusión de nuevos tests unitarios para validar el comportamiento de la nueva funcionalidad agregada.
Dentro del directorio Documentation se puede encontrar el diseño UML inicial, realizado en Lucidchart (durante el desarrollo sufrió algunas modificaciones y mejoras), y documentaciones específicas de los criterios matemáticos y de diseño seguidos.
Para el desarrollo del ejercicio se utilizó Visual Studio 2019.