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; package Application;
import java.util.ArrayList;
public class MenuManager { public class MenuManager {
private Menu rootMenu;
private ArrayList<Menu> menuList;
private Menu currentMenu; 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){ 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 { public void back() throws Exception {
if(!this.inRootMenu()) if(!this.inRootMenu())
this.currentMenu = this.currentMenu.getPreviousMenu(); this.currentMenu = this.currentMenu.getPreviousMenu();
else 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(){ public Menu getCurrentMenu(){
@ -26,7 +35,7 @@ public class MenuManager {
} }
public boolean inRootMenu(){ 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 { class MenuManagerTest {
MenuManager mm; MenuManager mm;
Menu rootMenu;
@BeforeEach @BeforeEach
void setUp() { void setUp() {
rootMenu = new Menu("Root");
Menu menu1 = new Menu("Menu1"); Menu menu1 = new Menu("Menu1");
Menu menu2 = new Menu("Menu2"); Menu menu2 = new Menu("Menu2");
Menu menu1_1 = new Menu("Menu1.1"); Menu menu1_1 = new Menu("Menu1.1");
menu1.addMenu(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 @AfterEach
@ -30,11 +28,11 @@ class MenuManagerTest {
@Test @Test
void testSelectFunction() { void testSelectFunction() {
assertEquals(mm.getCurrentMenu(), rootMenu);
assertNull(mm.getCurrentMenu());
mm.select(0); mm.select(0);
assertEquals(mm.getCurrentMenu(), rootMenu.getMenu(0));
assertEquals(mm.getCurrentMenu().getName(), "Menu1");
mm.select(0); mm.select(0);
assertEquals(mm.getCurrentMenu(), rootMenu.getMenu(0).getMenu(0));
assertEquals(mm.getCurrentMenu().getName(), "Menu1.1");
} }
@Test @Test
@ -55,7 +53,7 @@ class MenuManagerTest {
mm.select(0); mm.select(0);
try { try {
mm.back(); mm.back();
assertEquals(mm.getCurrentMenu(), rootMenu);
assertTrue(mm.inRootMenu());
} catch (Exception e) { } catch (Exception e) {
Assertions.fail("Test failed: " + e.getMessage()); Assertions.fail("Test failed: " + e.getMessage());
} }
@ -63,7 +61,7 @@ class MenuManagerTest {
mm.select(0); mm.select(0);
try { try {
mm.back(); mm.back();
assertEquals(mm.getCurrentMenu(), rootMenu.getMenu(0));
assertEquals(mm.getCurrentMenu().getName(), "Menu1");
} catch (Exception e) { } catch (Exception e) {
Assertions.fail("Test failed: " + e.getMessage()); Assertions.fail("Test failed: " + e.getMessage());
} }

Loading…
Cancel
Save