package Application; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*; class MenuManagerTest { MenuManager mm; @BeforeEach void setUp() { Menu menu1 = new Menu("Menu1"); Menu menu2 = new Menu("Menu2"); Menu menu1_1 = new Menu("Menu1.1"); menu1.addMenu(menu1_1); mm = new MenuManager(); mm.addMenu(menu1); mm.addMenu(menu2); } @AfterEach void tearDown() { } @Test void select() { assertNull(mm.getCurrentMenu()); mm.select(0); assertEquals(mm.getCurrentMenu().getName(), "Menu1"); mm.select(0); assertEquals(mm.getCurrentMenu().getName(), "Menu1.1"); } @Test void inRootMenu() { assertTrue(mm.inRootMenu()); mm.select(0); assertFalse(mm.inRootMenu()); } @Test void back() { try { mm.back(); Assertions.fail("Test failed: shouldn't be able to go back in rootMenu"); } catch (Exception e) { //Should throw Exception because currently in rootMenu } mm.select(0); try { mm.back(); assertTrue(mm.inRootMenu()); } catch (Exception e) { Assertions.fail("Test failed: " + e.getMessage()); } mm.select(0); mm.select(0); try { mm.back(); assertEquals(mm.getCurrentMenu().getName(), "Menu1"); } catch (Exception e) { Assertions.fail("Test failed: " + e.getMessage()); } } @Test void getFormattedMenuList(){ assertEquals(mm.getFormattedMenuList(), "1: Menu1\n2: Menu2\n"); mm.select(0); assertEquals(mm.getFormattedMenuList(), "1: Menu1.1\n"); } @Test void getSize() { assertEquals(mm.getSize(), 2); mm.select(0); assertEquals(mm.getSize(), 1); mm.select(0); assertEquals(mm.getSize(), 0); } }