diff --git a/src/tests/test_presentador.cpp b/src/tests/test_presentador.cpp index 432596d5..d921345f 100644 --- a/src/tests/test_presentador.cpp +++ b/src/tests/test_presentador.cpp @@ -1,5 +1,8 @@ +#include "../modelo/datos_nivel_para_modelo.h" #include "../modelo/dominio.h" +#include "../modelo/estado_modelo.h" #include "../modelo/modelo.h" +#include "../vista/enlace_vista.h" #include "../vista/presentador.h" #include "../vista/vista.h" #include @@ -29,3 +32,16 @@ TEST(Presentador, ContadoresToPreparadasString) { auto vista_preparadas = impl::contadores_to_preparadas(contadores); ASSERT_EQ(vista_preparadas.at(TipoPizza::Margarita), "Margarita: 1"); } + +TEST(Presentador, ObtenerActivacionBotonesSiPedidosEstaVacio) { + // No habria botones despachar al no haber pedidos + // que hagan referencia a ningun tipo de pizza + // Y cualquier boton encargar estaria activo al no haber + // demasiadas pizzas en el area de preparadas + DatosNivelParaModelo datos_nivel_para_modelo({}); + EstadoModelo estado_modelo(datos_nivel_para_modelo); + const auto activacion_botones = + impl::obtener_activacion_botones(estado_modelo); + ASSERT_TRUE(activacion_botones.despachar.empty()); + ASSERT_EQ(activacion_botones.encargar, true); +} diff --git a/src/vista/enlace_vista.cpp b/src/vista/enlace_vista.cpp index 3d6e907d..a60d8c53 100644 --- a/src/vista/enlace_vista.cpp +++ b/src/vista/enlace_vista.cpp @@ -20,27 +20,27 @@ namespace { } } - ActivacionBotones obtener_activacion_botones( // - const EstadoModelo &estado_modelo - ) { - const auto &control_pizzas = estado_modelo.control_pizzas; - // Activacion botones despachar - const modelo::PizzasAContadores &contadores = control_pizzas.contadores; - ActivacionBotones activacion_botones; - obtener_activacion_botones_dependiendo_de_si_hay_preparadas( - contadores, activacion_botones - ); +} // namespace - // Activacion botones encargar - constexpr int maximo = modelo_info::MAXIMO_PIZZAS_EN_PREPARACION; - const int en_preparacion = estado_modelo.encargos.total(); - assert(en_preparacion <= maximo); - const bool se_pueden_preparar_mas = en_preparacion < maximo; - activacion_botones.encargar = se_pueden_preparar_mas; - return activacion_botones; - } +ActivacionBotones impl::obtener_activacion_botones( // + const EstadoModelo &estado_modelo +) { + const auto &control_pizzas = estado_modelo.control_pizzas; + // Activacion botones despachar + const modelo::PizzasAContadores &contadores = control_pizzas.contadores; + ActivacionBotones activacion_botones; + obtener_activacion_botones_dependiendo_de_si_hay_preparadas( + contadores, activacion_botones + ); -} // namespace + // Activacion botones encargar + constexpr int maximo = modelo_info::MAXIMO_PIZZAS_EN_PREPARACION; + const int en_preparacion = estado_modelo.encargos.total(); + assert(en_preparacion <= maximo); + const bool se_pueden_preparar_mas = en_preparacion < maximo; + activacion_botones.encargar = se_pueden_preparar_mas; + return activacion_botones; +} void EnlaceVista::on_cambio_a_fase_activa() const { vista->mostrar_elementos_fase_activa(); @@ -60,7 +60,7 @@ void EnlaceVista::actualizarIU( const sf::Time &tiempo_real_actual // ) { const auto activacion_botones = - obtener_activacion_botones(estado.estado_modelo); + impl::obtener_activacion_botones(estado.estado_modelo); vista->activar_botones_condicionalmente(activacion_botones); vista->actualizarIU(target, estado, tiempo_real_actual); } diff --git a/src/vista/enlace_vista.h b/src/vista/enlace_vista.h index cd3e361b..94026a58 100644 --- a/src/vista/enlace_vista.h +++ b/src/vista/enlace_vista.h @@ -3,13 +3,21 @@ #include #include +struct ActivacionBotones; struct Estado; +struct EstadoModelo; struct Vista; namespace sf { class RenderTarget; } // namespace sf +namespace impl { + ActivacionBotones obtener_activacion_botones( // + const EstadoModelo &estado_modelo + ); +} + /* Debe ser un intermediario entre el modelo y la vista */ class EnlaceVista { // TODO: hacer vista privado