diff --git a/run_util_test.sh b/run_util_test.sh new file mode 100644 index 0000000..20c1a92 --- /dev/null +++ b/run_util_test.sh @@ -0,0 +1,35 @@ +#!/bin/bash +rm -rf build/test/stubs +rm -rf build/test/classes +mkdir -p build/test/stubs +mkdir -p build/test/classes + +echo "Compiling stubs..." +find test/stubs -name "*.java" > sources_stubs.txt +javac -d build/test/stubs @sources_stubs.txt +if [ $? -ne 0 ]; then + echo "Stub compilation failed!" + exit 1 +fi + +# Construct classpath excluding jfoenix because we are stubbing it +CP="libs/test/*:build/test/stubs" +for jar in libs/*.jar; do + if [[ $jar != *"jfoenix"* ]]; then + CP="$CP:$jar" + fi +done + +echo "Classpath: $CP" + +echo "Compiling LibraryAssistantUtil and Test..." +javac -sourcepath "" -cp "$CP" -d build/test/classes \ +src/library/assistant/util/LibraryAssistantUtil.java \ +test/library/assistant/util/LibraryAssistantUtilTest.java +if [ $? -ne 0 ]; then + echo "Source compilation failed!" + exit 1 +fi + +echo "Running Test..." +java -cp "build/test/classes:$CP" org.junit.runner.JUnitCore library.assistant.util.LibraryAssistantUtilTest diff --git a/sources_stubs.txt b/sources_stubs.txt new file mode 100644 index 0000000..803c526 --- /dev/null +++ b/sources_stubs.txt @@ -0,0 +1,20 @@ +test/stubs/library/assistant/database/DatabaseHandler.java +test/stubs/library/assistant/ui/listmember/MemberListController.java +test/stubs/library/assistant/ui/settings/Preferences.java +test/stubs/library/assistant/ui/main/MainController.java +test/stubs/library/assistant/export/pdf/ListToPDF.java +test/stubs/library/assistant/alert/AlertMaker.java +test/stubs/javafx/scene/image/Image.java +test/stubs/javafx/scene/Scene.java +test/stubs/javafx/scene/layout/StackPane.java +test/stubs/javafx/scene/Parent.java +test/stubs/javafx/scene/Node.java +test/stubs/javafx/event/Event.java +test/stubs/javafx/event/EventHandler.java +test/stubs/javafx/event/ActionEvent.java +test/stubs/javafx/stage/FileChooser.java +test/stubs/javafx/stage/Window.java +test/stubs/javafx/stage/StageStyle.java +test/stubs/javafx/stage/Stage.java +test/stubs/javafx/fxml/FXMLLoader.java +test/stubs/com/jfoenix/controls/JFXButton.java diff --git a/test/library/assistant/util/LibraryAssistantUtilTest.java b/test/library/assistant/util/LibraryAssistantUtilTest.java new file mode 100644 index 0000000..008d19e --- /dev/null +++ b/test/library/assistant/util/LibraryAssistantUtilTest.java @@ -0,0 +1,23 @@ +package library.assistant.util; + +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; +import org.junit.Assert; +import org.junit.Test; + +public class LibraryAssistantUtilTest { + + @Test + public void testFormatDateTimeString() { + // 2023-10-25 14:30:45 + Calendar calendar = new GregorianCalendar(2023, Calendar.OCTOBER, 25, 14, 30, 45); + Date date = calendar.getTime(); + + // Expected format: dd-MM-yyyy hh:mm:ss a + String expected = "25-10-2023 02:30:45 PM"; + String actual = LibraryAssistantUtil.formatDateTimeString(date); + + Assert.assertEquals(expected, actual); + } +} diff --git a/test/stubs/com/jfoenix/controls/JFXButton.java b/test/stubs/com/jfoenix/controls/JFXButton.java new file mode 100644 index 0000000..1c2362d --- /dev/null +++ b/test/stubs/com/jfoenix/controls/JFXButton.java @@ -0,0 +1,8 @@ +package com.jfoenix.controls; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.scene.Node; +public class JFXButton extends Node { + public JFXButton(String text) {} + public void setOnAction(EventHandler value) {} +} diff --git a/test/stubs/javafx/event/ActionEvent.java b/test/stubs/javafx/event/ActionEvent.java new file mode 100644 index 0000000..2a8566d --- /dev/null +++ b/test/stubs/javafx/event/ActionEvent.java @@ -0,0 +1,2 @@ +package javafx.event; +public class ActionEvent extends Event {} diff --git a/test/stubs/javafx/event/Event.java b/test/stubs/javafx/event/Event.java new file mode 100644 index 0000000..f388475 --- /dev/null +++ b/test/stubs/javafx/event/Event.java @@ -0,0 +1,2 @@ +package javafx.event; +public class Event {} diff --git a/test/stubs/javafx/event/EventHandler.java b/test/stubs/javafx/event/EventHandler.java new file mode 100644 index 0000000..bf50c28 --- /dev/null +++ b/test/stubs/javafx/event/EventHandler.java @@ -0,0 +1,4 @@ +package javafx.event; +public interface EventHandler { + void handle(T event); +} diff --git a/test/stubs/javafx/fxml/FXMLLoader.java b/test/stubs/javafx/fxml/FXMLLoader.java new file mode 100644 index 0000000..865efd7 --- /dev/null +++ b/test/stubs/javafx/fxml/FXMLLoader.java @@ -0,0 +1,7 @@ +package javafx.fxml; +import java.net.URL; +public class FXMLLoader { + public FXMLLoader(URL location) {} + public T load() throws java.io.IOException { return null; } + public T getController() { return null; } +} diff --git a/test/stubs/javafx/scene/Node.java b/test/stubs/javafx/scene/Node.java new file mode 100644 index 0000000..c792dff --- /dev/null +++ b/test/stubs/javafx/scene/Node.java @@ -0,0 +1,2 @@ +package javafx.scene; +public abstract class Node {} diff --git a/test/stubs/javafx/scene/Parent.java b/test/stubs/javafx/scene/Parent.java new file mode 100644 index 0000000..e2e24a8 --- /dev/null +++ b/test/stubs/javafx/scene/Parent.java @@ -0,0 +1,2 @@ +package javafx.scene; +public abstract class Parent extends Node {} diff --git a/test/stubs/javafx/scene/Scene.java b/test/stubs/javafx/scene/Scene.java new file mode 100644 index 0000000..b8db27b --- /dev/null +++ b/test/stubs/javafx/scene/Scene.java @@ -0,0 +1,6 @@ +package javafx.scene; +import javafx.stage.Window; +public class Scene { + public Scene(Parent root) {} + public Window getWindow() { return null; } +} diff --git a/test/stubs/javafx/scene/image/Image.java b/test/stubs/javafx/scene/image/Image.java new file mode 100644 index 0000000..d339b7a --- /dev/null +++ b/test/stubs/javafx/scene/image/Image.java @@ -0,0 +1,4 @@ +package javafx.scene.image; +public class Image { + public Image(String url) {} +} diff --git a/test/stubs/javafx/scene/layout/StackPane.java b/test/stubs/javafx/scene/layout/StackPane.java new file mode 100644 index 0000000..38530da --- /dev/null +++ b/test/stubs/javafx/scene/layout/StackPane.java @@ -0,0 +1,3 @@ +package javafx.scene.layout; +import javafx.scene.Parent; +public class StackPane extends Parent {} diff --git a/test/stubs/javafx/stage/FileChooser.java b/test/stubs/javafx/stage/FileChooser.java new file mode 100644 index 0000000..e032913 --- /dev/null +++ b/test/stubs/javafx/stage/FileChooser.java @@ -0,0 +1,12 @@ +package javafx.stage; +import java.io.File; +import java.util.ArrayList; +import java.util.List; +public class FileChooser { + public void setTitle(String title) {} + public List getExtensionFilters() { return new ArrayList<>(); } + public File showSaveDialog(Window ownerWindow) { return new File("dummy.pdf"); } + public static class ExtensionFilter { + public ExtensionFilter(String description, String... extensions) {} + } +} diff --git a/test/stubs/javafx/stage/Stage.java b/test/stubs/javafx/stage/Stage.java new file mode 100644 index 0000000..2eaf769 --- /dev/null +++ b/test/stubs/javafx/stage/Stage.java @@ -0,0 +1,14 @@ +package javafx.stage; +import javafx.scene.Scene; +import javafx.scene.image.Image; +import java.util.ArrayList; +import java.util.List; +public class Stage extends Window { + private List icons = new ArrayList<>(); + public Stage(StageStyle style) {} + public Stage() {} + public void setTitle(String title) {} + public void setScene(Scene scene) {} + public void show() {} + public List getIcons() { return icons; } +} diff --git a/test/stubs/javafx/stage/StageStyle.java b/test/stubs/javafx/stage/StageStyle.java new file mode 100644 index 0000000..e30bfe6 --- /dev/null +++ b/test/stubs/javafx/stage/StageStyle.java @@ -0,0 +1,7 @@ +package javafx.stage; +public enum StageStyle { + DECORATED, + TRANSPARENT, + UNDECORATED, + UTILITY +} diff --git a/test/stubs/javafx/stage/Window.java b/test/stubs/javafx/stage/Window.java new file mode 100644 index 0000000..dc36f14 --- /dev/null +++ b/test/stubs/javafx/stage/Window.java @@ -0,0 +1,2 @@ +package javafx.stage; +public class Window {} diff --git a/test/stubs/library/assistant/alert/AlertMaker.java b/test/stubs/library/assistant/alert/AlertMaker.java new file mode 100644 index 0000000..8a26da8 --- /dev/null +++ b/test/stubs/library/assistant/alert/AlertMaker.java @@ -0,0 +1,10 @@ +package library.assistant.alert; +import javafx.scene.Node; +import javafx.scene.layout.StackPane; +import com.jfoenix.controls.JFXButton; +import java.util.List; + +public class AlertMaker { + public static void showErrorMessage(String title, String content) {} + public static void showMaterialDialog(StackPane root, Node nodeToBeBlurred, List controls, String header, String body) {} +} diff --git a/test/stubs/library/assistant/export/pdf/ListToPDF.java b/test/stubs/library/assistant/export/pdf/ListToPDF.java new file mode 100644 index 0000000..5c630f0 --- /dev/null +++ b/test/stubs/library/assistant/export/pdf/ListToPDF.java @@ -0,0 +1,8 @@ +package library.assistant.export.pdf; +import java.io.File; +import java.util.List; + +public class ListToPDF { + public enum Orientation { LANDSCAPE, PORTRAIT } + public boolean doPrintToPdf(List data, File saveLoc, Orientation orientation) { return true; } +} diff --git a/test/stubs/library/assistant/ui/main/MainController.java b/test/stubs/library/assistant/ui/main/MainController.java new file mode 100644 index 0000000..e6d2974 --- /dev/null +++ b/test/stubs/library/assistant/ui/main/MainController.java @@ -0,0 +1,2 @@ +package library.assistant.ui.main; +public class MainController {} diff --git a/test/stubs/library/assistant/ui/settings/Preferences.java b/test/stubs/library/assistant/ui/settings/Preferences.java new file mode 100644 index 0000000..098b7e7 --- /dev/null +++ b/test/stubs/library/assistant/ui/settings/Preferences.java @@ -0,0 +1,6 @@ +package library.assistant.ui.settings; +public class Preferences { + public static Preferences getPreferences() { return new Preferences(); } + public int getnDaysWithoutFine() { return 10; } + public float getFinePerDay() { return 2.0f; } +}