diff --git a/test/MenuTest.cpp b/test/MenuTest.cpp index 5af3e5f..0db77c8 100644 --- a/test/MenuTest.cpp +++ b/test/MenuTest.cpp @@ -4,6 +4,9 @@ #include #include "FakeDisplay.h" +#include "src/InputAction.h" +#include "src/UserChoice.h" +#include "test/FakeInput.h" TEST_CASE("Menu usage", "[Menu]") { @@ -29,4 +32,43 @@ TEST_CASE("Menu usage", "[Menu]") REQUIRE(menu.choiceToLevel(UserChoice::LEVEL_MENU) == Level::LEVEL_4); REQUIRE(menu.choiceToLevel(UserChoice::EXIT) == Level::LEVEL_4); } + + SECTION("getUserChoice EXIT") + { + FakeInput input{InputAction::QUIT, {}, {}}; + UserChoice choice{menu.getUserChoice(input)}; + REQUIRE(choice == UserChoice::EXIT); + } + + SECTION("getUserChoice accept in main menu") + { + menu.refresh(UserChoice::MAIN_MENU); + FakeInput input{InputAction::ACCEPT, {}, {}}; + UserChoice choice{menu.getUserChoice(input)}; + REQUIRE(choice == UserChoice::LEVEL_MENU); + } + + SECTION("getUserChoice back in main menu") + { + menu.refresh(UserChoice::MAIN_MENU); + FakeInput input{InputAction::BACK, {}, {}}; + UserChoice choice{menu.getUserChoice(input)}; + REQUIRE(choice == UserChoice::EXIT); + } + + SECTION("getUserChoice back in level menu") + { + menu.refresh(UserChoice::LEVEL_MENU); + FakeInput input{InputAction::BACK, {}, {}}; + UserChoice choice{menu.getUserChoice(input)}; + REQUIRE(choice == UserChoice::BACK); + } + + SECTION("getUserChoice accept in level menu") + { + menu.refresh(UserChoice::LEVEL_MENU); + FakeInput input{InputAction::ACCEPT, {}, {}}; + UserChoice choice{menu.getUserChoice(input)}; + REQUIRE(choice == UserChoice::LEVEL_1); + } }