Skip to content

Commit

Permalink
Update ViewManagerTest.java
Browse files Browse the repository at this point in the history
  • Loading branch information
tommyah committed May 25, 2026
1 parent 757b17b commit 006979a
Showing 1 changed file with 44 additions and 25 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import edu.ntnu.idi.idatt2003.g40.mappe.service.event.EventManager;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;
import org.junit.jupiter.api.Assertions;
Expand All @@ -17,16 +16,22 @@
*/
class ViewManagerTest extends ApplicationTest {

/**
* View manager object used for testing.
* */
private ViewManager testViewManager;
private EventManager testEventManager;
private ViewManagerTest.GenericViewElement genericViewElement;

/**
* Generic view element instance used for testing.
* */
private ViewManagerTest.GenericViewElement testViewElement;

@Override
public void start(final Stage stage) {
stage.setScene(new Scene(new Pane()));
testEventManager = new EventManager();
EventManager testEventManager = new EventManager();
testViewManager = new ViewManager(stage, testEventManager);
genericViewElement = new GenericViewElement(new Pane(), ViewEnum.IN_GAME);
testViewElement = new GenericViewElement(new Pane(), ViewEnum.IN_GAME);
}

@Test
Expand All @@ -36,42 +41,59 @@ void testViewManagerHoldsNoViewAtStart() {

@Test
void addingMultipleOfSameViewThrowsException() {
testViewManager.addView(genericViewElement);
testViewManager.addView(testViewElement);
Assertions.assertThrows(IllegalArgumentException.class, () -> {
testViewManager.addView(genericViewElement);
testViewManager.addView(testViewElement);
});
}

@Test
void testViewManagerSettingCorrectView() {
testViewManager.addView(genericViewElement);
testViewManager.setScene(genericViewElement);
Assertions.assertEquals(genericViewElement, testViewManager.getCurrentView());
testViewManager.addView(testViewElement);
testViewManager.setScene(testViewElement);
Assertions.assertEquals(testViewElement, testViewManager.getCurrentView());
}

@Test
void testViewManagerThrowingErrorWhenSettingNonExistentView() {
Assertions.assertThrows(IllegalArgumentException.class, () -> {
testViewManager.setScene(genericViewElement);
testViewManager.setScene(testViewElement);
});
}

@Test
void throwsErrorWhenAddingWidgetWithNoViewName() {
genericViewElement = new GenericViewElement(new Pane());
testViewElement = new GenericViewElement(new Pane());
Assertions.assertThrows(IllegalArgumentException.class, () -> {
testViewManager.addView(genericViewElement);
testViewManager.addView(testViewElement);
});
}

private enum GenericActions {
ACTION_1;
@Test
void settingViewThroughViewDataWorksAsExpected() {
GenericViewElement testViewElement2 =
new GenericViewElement(new Pane(), ViewEnum.MAIN_MENU);

testViewManager.addView(testViewElement2);
ViewData viewData = new ViewData(ViewEnum.MAIN_MENU);

Assertions.assertNotEquals(testViewElement2,
testViewManager.getCurrentView());

testViewManager.setScene(viewData);
Assertions.assertEquals(testViewElement2, testViewManager.getCurrentView());
}

private enum GenericActions {
// Empty.
}

private class GenericViewElement extends ViewElement<Pane, GenericActions> {
public Boolean buttonPressed = false;
private Button interactableButton;
/**
* Generic view element class used to test view elements within
* the view manager.
* */
private static class GenericViewElement
extends ViewElement<Pane, GenericActions> {

protected GenericViewElement(final Pane rootPane, final ViewEnum viewName) {
super(rootPane, viewName, GenericActions.class);
Expand All @@ -83,15 +105,12 @@ protected GenericViewElement(final Pane rootPane) {

@Override
protected void initLayout() {
interactableButton = new Button("Click me!");
registerButton(GenericActions.ACTION_1, interactableButton);
}

public Button getInteractableButton() {
return interactableButton;
// Empty for view manager testing.
}

@Override
protected void initStyling() { }
protected void initStyling() {
// Empty for view manager testing.
}
}
}

0 comments on commit 006979a

Please sign in to comment.