diff --git a/src/main/java/app/model/Model.java b/src/main/java/app/model/Model.java index 850ce95..d88cbd1 100644 --- a/src/main/java/app/model/Model.java +++ b/src/main/java/app/model/Model.java @@ -15,8 +15,8 @@ import javafx.scene.Scene; public class Model { private static boolean fileIsSaved; private static Optional activeFilePath; - private static Optional currentProjectPath; - private static ProgrammingLanguage currentProgrammingLanguage; + private static Optional activeProjectPath; + private static ProgrammingLanguage activeProgrammingLanguage; private static String theme; private static Scene scene; private static SettingsProvider settings; @@ -26,19 +26,23 @@ public class Model { } public static void setActiveFilePath(Optional path) { + if (path == null) + throw new IllegalArgumentException("path can not be null"); Model.activeFilePath = path; } public static Optional getProjectPath() { - return currentProjectPath; + return activeProjectPath; } public static void setProjectPath(Optional path) { - Model.currentProjectPath = path; + if (path == null) + throw new IllegalArgumentException("path can not be null"); + Model.activeProjectPath = path; } public static ProgrammingLanguage getLanguage() { - return currentProgrammingLanguage; + return activeProgrammingLanguage; } public static Scene getScene() { @@ -58,14 +62,20 @@ public class Model { } public static void setTheme(String theme) { + if (theme == null) + throw new IllegalArgumentException("theme can not be null"); Model.theme = theme; } public static void setLanguage(ProgrammingLanguage language) { - Model.currentProgrammingLanguage = language; + if (language == null) + throw new IllegalArgumentException("language can not be null"); + Model.activeProgrammingLanguage = language; } public static void setScene(Scene scene) { + if (scene == null) + throw new IllegalArgumentException("scene can not be null"); Model.scene = scene; } @@ -74,6 +84,8 @@ public class Model { } public static void setSettingsProvider(SettingsProvider settings) { + if (settings == null) + throw new IllegalArgumentException("settings can not be null"); Model.settings = settings; } diff --git a/src/test/java/app/model/ModelTest.java b/src/test/java/app/model/ModelTest.java new file mode 100644 index 0000000..6ec36ce --- /dev/null +++ b/src/test/java/app/model/ModelTest.java @@ -0,0 +1,82 @@ +package app.model; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.Mockito.mock; + +import java.nio.file.Path; +import java.util.Optional; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import app.settings.SettingsProvider; +import javafx.scene.Scene; + +public class ModelTest { + + @Test + @DisplayName("Test get/set fileIsSaved") + public void testFileIsSaved() { + boolean fileIsSaved = false; + Model.setFileIsSaved(fileIsSaved); + assertEquals(fileIsSaved, Model.getFileIsSaved()); + } + + @Test + @DisplayName("Test get/set activeFilePath") + public void testActiveFilePath() { + Optional activeFilePath = Optional.empty(); + Model.setActiveFilePath(activeFilePath); + assertEquals(activeFilePath, Model.getActiveFilePath()); + assertThrows(IllegalArgumentException.class, () -> Model.setActiveFilePath(null)); + } + + @Test + @DisplayName("Test get/set projectPath") + public void testActiveProjectPath() { + Optional projectPath = Optional.empty(); + Model.setProjectPath(projectPath); + assertEquals(projectPath, Model.getProjectPath()); + assertThrows(IllegalArgumentException.class, () -> Model.setProjectPath(null)); + } + + @Test + @DisplayName("Test get/set programmingLanguage") + public void testActiveProgrammingLanguage() { + ProgrammingLanguage lang = mock(ProgrammingLanguage.class); + Model.setLanguage(lang); + assertEquals(lang, Model.getLanguage()); + assertThrows(IllegalArgumentException.class, () -> Model.setLanguage(null)); + } + + + @Test + @DisplayName("Test get/set theme") + public void testTheme() { + String theme = "Monokai"; + Model.setTheme(theme); + assertEquals(theme, Model.getTheme()); + assertThrows(IllegalArgumentException.class, () -> Model.setTheme(null)); + } + + @Test + @DisplayName("Test get/set scene") + public void testScene() { + Scene scene = mock(Scene.class); + + Model.setScene(scene); + assertEquals(scene, Model.getScene()); + assertThrows(IllegalArgumentException.class, () -> Model.setScene(null)); + } + + @Test + @DisplayName("Test get/set settingsProvider") + public void testSettingsProvider() { + SettingsProvider settings = mock(SettingsProvider.class); + Model.setSettingsProvider(settings); + assertEquals(settings, Model.getSettingsProvider()); + assertThrows(IllegalArgumentException.class, () -> Model.setSettingsProvider(null)); + } + +}