Browse Source

Changed Menumanager implementation from using a single rootMenu to using a ArrayList directly for its submenus

feature-menu
Nick Stolbov 2 years ago
parent
commit
e427700f90
  1. 23
      src/main/java/Application/MenuManager.java
  2. 18
      src/test/java/Application/MenuManagerTest.java

23
src/main/java/Application/MenuManager.java

@ -1,24 +1,33 @@
package Application;
import java.util.ArrayList;
public class MenuManager {
private Menu rootMenu;
private ArrayList<Menu> menuList;
private Menu currentMenu;
public MenuManager(Menu rootMenu){
this.rootMenu = rootMenu;
this.currentMenu = rootMenu;
public MenuManager(){
menuList = new ArrayList<>();
currentMenu = null;
}
public void addMenu(Menu menu){
menuList.add(menu);
}
public void select(int i){
this.currentMenu = currentMenu.getMenu(i);
if(currentMenu == null)
this.currentMenu = menuList.get(i);
else
this.currentMenu = currentMenu.getMenu(i);
}
public void back() throws Exception {
if(!this.inRootMenu())
this.currentMenu = this.currentMenu.getPreviousMenu();
else
throw new Exception("Menu is a root menu, a previous menu doesn't exist");
throw new Exception("Menu is in the root menu, a previous menu doesn't exist");
}
public Menu getCurrentMenu(){
@ -26,7 +35,7 @@ public class MenuManager {
}
public boolean inRootMenu(){
return this.currentMenu.equals(this.rootMenu);
return this.currentMenu == null;
}
}

18
src/test/java/Application/MenuManagerTest.java

@ -10,18 +10,16 @@ import static org.junit.jupiter.api.Assertions.*;
class MenuManagerTest {
MenuManager mm;
Menu rootMenu;
@BeforeEach
void setUp() {
rootMenu = new Menu("Root");
Menu menu1 = new Menu("Menu1");
Menu menu2 = new Menu("Menu2");
Menu menu1_1 = new Menu("Menu1.1");
menu1.addMenu(menu1_1);
rootMenu.addMenu(menu1);
rootMenu.addMenu(menu2);
mm = new MenuManager(rootMenu);
mm = new MenuManager();
mm.addMenu(menu1);
mm.addMenu(menu2);
}
@AfterEach
@ -30,11 +28,11 @@ class MenuManagerTest {
@Test
void testSelectFunction() {
assertEquals(mm.getCurrentMenu(), rootMenu);
assertNull(mm.getCurrentMenu());
mm.select(0);
assertEquals(mm.getCurrentMenu(), rootMenu.getMenu(0));
assertEquals(mm.getCurrentMenu().getName(), "Menu1");
mm.select(0);
assertEquals(mm.getCurrentMenu(), rootMenu.getMenu(0).getMenu(0));
assertEquals(mm.getCurrentMenu().getName(), "Menu1.1");
}
@Test
@ -55,7 +53,7 @@ class MenuManagerTest {
mm.select(0);
try {
mm.back();
assertEquals(mm.getCurrentMenu(), rootMenu);
assertTrue(mm.inRootMenu());
} catch (Exception e) {
Assertions.fail("Test failed: " + e.getMessage());
}
@ -63,7 +61,7 @@ class MenuManagerTest {
mm.select(0);
try {
mm.back();
assertEquals(mm.getCurrentMenu(), rootMenu.getMenu(0));
assertEquals(mm.getCurrentMenu().getName(), "Menu1");
} catch (Exception e) {
Assertions.fail("Test failed: " + e.getMessage());
}

Loading…
Cancel
Save