From 5bdf7e01510e9e8a38e2b5f497e8d17445b98e28 Mon Sep 17 00:00:00 2001 From: Marcus Rockwell Date: Thu, 5 Oct 2023 16:35:38 -0500 Subject: [PATCH] MTV Tests Reimplemented --- .../java/trick/mtv/MtvApplicationTest.java | 63 +++++++++++++++++++ .../java/trick/mtv/WaitForMtvApplication.java | 49 +++++++++++++++ 2 files changed, 112 insertions(+) create mode 100644 trick_source/java/src/test/java/trick/mtv/MtvApplicationTest.java create mode 100644 trick_source/java/src/test/java/trick/mtv/WaitForMtvApplication.java diff --git a/trick_source/java/src/test/java/trick/mtv/MtvApplicationTest.java b/trick_source/java/src/test/java/trick/mtv/MtvApplicationTest.java new file mode 100644 index 00000000..a7462d6d --- /dev/null +++ b/trick_source/java/src/test/java/trick/mtv/MtvApplicationTest.java @@ -0,0 +1,63 @@ +package trick.mtv; + +import static org.junit.Assert.assertTrue; + +import org.jdesktop.application.Application; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +import trick.common.CheckApplicationProperties; + +/** + * + * Test MtvApplication life cycle. + * + * @author hchen + * @intern mrockwell2 + * + */ +public class MtvApplicationTest { + + @BeforeClass + public static void setUpBeforeClass() throws Exception { + WaitForMtvApplication.launchAndWait(WaitForMtvApplication.class); + } + + @AfterClass + public static void tearDownAfterClass() throws Exception { + } + + @Before + public void setUp() throws Exception { + } + + @After + public void tearDown() throws Exception { + } + + @Test + public void testReady() { + assertTrue("MtvApplicationTest is not ready yet!", application().isReady()); + } + + + @Test + public void testDefinedKeyText() { + CheckApplicationProperties.checkKeyText(application().resourceMap, "fileMenu.text", "&File"); + CheckApplicationProperties.checkKeyText(application().resourceMap, "default_event_directory", "./Modified_data"); + } + + @Test + public void testExit() { + application().removeExitListener(application().exitListener); + application().exit(); + assertTrue(application().isEnded); + } + + private static WaitForMtvApplication application() { + return Application.getInstance(WaitForMtvApplication.class); + } +} \ No newline at end of file diff --git a/trick_source/java/src/test/java/trick/mtv/WaitForMtvApplication.java b/trick_source/java/src/test/java/trick/mtv/WaitForMtvApplication.java new file mode 100644 index 00000000..3429f0d4 --- /dev/null +++ b/trick_source/java/src/test/java/trick/mtv/WaitForMtvApplication.java @@ -0,0 +1,49 @@ +package trick.mtv; + + +import org.jdesktop.application.Application; + + +public class WaitForMtvApplication extends MtvApp { + static Object lock = new Object(); + + boolean isEnded; + + @Override + protected void end() { + isEnded = true; + } + + @Override + protected void ready() { + super.ready(); + synchronized(lock) { + lock.notifyAll(); + } + } + + /** + * Launch the specified subclsas of MtvApp and block + * (wait) until it's startup() method has run. + */ + public static void launchAndWait(Class applicationClass) { + synchronized(lock) { + Application.launch(applicationClass, new String[]{}); + while(true) { + try { + lock.wait(); + } + catch (InterruptedException e) { + System.err.println("launchAndWait interrupted!"); + break; + } + Application app = Application.getInstance(WaitForMtvApplication.class); + if (app instanceof WaitForMtvApplication) { + if (((WaitForMtvApplication)app).isReady()) { + break; + } + } + } + } + } +} \ No newline at end of file