From 14b855ada699ce336379e764eb236ce064ebc02c Mon Sep 17 00:00:00 2001 From: James Seibel Date: Sun, 11 Sep 2022 22:25:22 -0500 Subject: [PATCH] Fix incorrect API tests (and move them to the API sub-project) --- .../abstractObjects/DhApiTestEvent.java | 39 +++++++++ .../testItems/events/objects/DhTestEvent.java | 30 +++++++ .../events/objects/DhTestEventAlt.java | 30 +++++++ .../test/java/tests/EventInjectorTest.java | 85 +++++++++++++++++++ .../abstractEvents/CoreDhApiTestEvent.java | 15 ++++ .../abstractObjects/DhApiTestEvent.java | 37 -------- .../eventInjection/objects/DhTestEvent.java | 28 ------ .../objects/DhTestEventAlt.java | 28 ------ .../java/tests/DependencyInjectorTest.java | 68 +-------------- 9 files changed, 200 insertions(+), 160 deletions(-) create mode 100644 api/src/test/java/testItems/events/abstractObjects/DhApiTestEvent.java create mode 100644 api/src/test/java/testItems/events/objects/DhTestEvent.java create mode 100644 api/src/test/java/testItems/events/objects/DhTestEventAlt.java create mode 100644 api/src/test/java/tests/EventInjectorTest.java create mode 100644 core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/objects/events/abstractEvents/CoreDhApiTestEvent.java delete mode 100644 core/src/test/java/testItems/eventInjection/abstractObjects/DhApiTestEvent.java delete mode 100644 core/src/test/java/testItems/eventInjection/objects/DhTestEvent.java delete mode 100644 core/src/test/java/testItems/eventInjection/objects/DhTestEventAlt.java diff --git a/api/src/test/java/testItems/events/abstractObjects/DhApiTestEvent.java b/api/src/test/java/testItems/events/abstractObjects/DhApiTestEvent.java new file mode 100644 index 000000000..82fa1cd28 --- /dev/null +++ b/api/src/test/java/testItems/events/abstractObjects/DhApiTestEvent.java @@ -0,0 +1,39 @@ +package testItems.events.abstractObjects; + +import com.seibel.lod.api.items.interfaces.world.IDhApiLevelWrapper; +import com.seibel.lod.api.items.objects.wrappers.DhApiLevelWrapper; +import com.seibel.lod.api.methods.events.abstractEvents.DhApiLevelLoadEvent; +import com.seibel.lod.api.methods.events.interfaces.IDhApiEvent; +import com.seibel.lod.core.api.external.coreImplementations.objects.events.abstractEvents.CoreDhApiLevelLoadEvent; +import com.seibel.lod.core.api.external.coreImplementations.objects.events.abstractEvents.CoreDhApiTestEvent; +import com.seibel.lod.core.wrapperInterfaces.world.ILevelWrapper; + +/** + * A dummy event implementation used for unit testing. + * + * @author James Seibel + * @version 2022-9-11 + */ +public abstract class DhApiTestEvent + extends CoreDhApiTestEvent + implements IDhApiEvent +{ + + public abstract void onTestEvent(Boolean input); + + + //=========================// + // internal DH API methods // + //=========================// + + @Override + public final boolean fireEvent(Boolean input) + { + onTestEvent(input); + return false; + } + + @Override + public final boolean getCancelable() { return false; } + +} \ No newline at end of file diff --git a/api/src/test/java/testItems/events/objects/DhTestEvent.java b/api/src/test/java/testItems/events/objects/DhTestEvent.java new file mode 100644 index 000000000..a9f756716 --- /dev/null +++ b/api/src/test/java/testItems/events/objects/DhTestEvent.java @@ -0,0 +1,30 @@ +package testItems.events.objects; + +import testItems.events.abstractObjects.DhApiTestEvent; + +/** + * Dummy test event for unit tests. + * + * @author James Seibel + * @version 2022-9-11 + */ +public class DhTestEvent extends DhApiTestEvent +{ + public Boolean eventFiredValue = null; + + @Override + public void onTestEvent(Boolean input) + { + this.eventFiredValue = input; + } + + @Override + public boolean removeAfterFiring() { return false; } + + + + // test (non standard) methods // + @Override + public boolean getTestValue() { return eventFiredValue; } + +} diff --git a/api/src/test/java/testItems/events/objects/DhTestEventAlt.java b/api/src/test/java/testItems/events/objects/DhTestEventAlt.java new file mode 100644 index 000000000..6b090fe5c --- /dev/null +++ b/api/src/test/java/testItems/events/objects/DhTestEventAlt.java @@ -0,0 +1,30 @@ +package testItems.events.objects; + +import testItems.events.abstractObjects.DhApiTestEvent; + +/** + * Dummy test event for unit tests. + * + * @author James Seibel + * @version 2022-9-11 + */ +public class DhTestEventAlt extends DhApiTestEvent +{ + public Boolean eventFiredValue = null; + + @Override + public void onTestEvent(Boolean input) + { + this.eventFiredValue = input; + } + + @Override + public boolean removeAfterFiring() { return false; } + + + + // test (non standard) methods // + @Override + public boolean getTestValue() { return eventFiredValue; } + +} diff --git a/api/src/test/java/tests/EventInjectorTest.java b/api/src/test/java/tests/EventInjectorTest.java new file mode 100644 index 000000000..4de7b7f5a --- /dev/null +++ b/api/src/test/java/tests/EventInjectorTest.java @@ -0,0 +1,85 @@ +package tests; + +import com.seibel.lod.core.api.external.coreImplementations.objects.events.abstractEvents.CoreDhApiTestEvent; +import com.seibel.lod.core.handlers.dependencyInjection.*; +import org.junit.Assert; +import org.junit.Test; +import testItems.events.abstractObjects.DhApiTestEvent; +import testItems.events.objects.DhTestEvent; +import testItems.events.objects.DhTestEventAlt; + +import java.util.ArrayList; + + +/** + * @author James Seibel + * @version 2022-9-11 + */ +public class EventInjectorTest +{ + + @Test + public void testEventDependencies() // this also tests list dependencies since there can be more than one event handler bound per event + { + // Injector setup + DhApiEventInjector TEST_EVENT_HANDLER = new DhApiEventInjector(); + + + // pre-dependency setup + Assert.assertNull("Nothing should have been bound.", TEST_EVENT_HANDLER.get(DhApiTestEvent.class)); + + + // dependency setup + TEST_EVENT_HANDLER.bind(DhApiTestEvent.class, new DhTestEvent()); + TEST_EVENT_HANDLER.bind(DhApiTestEvent.class, new DhTestEventAlt()); + TEST_EVENT_HANDLER.runDelayedSetup(); + + + // get first + CoreDhApiTestEvent afterRenderEvent = TEST_EVENT_HANDLER.get(CoreDhApiTestEvent.class); + Assert.assertNotNull("Event not bound.", afterRenderEvent); + + + // get list + ArrayList afterRenderEventList = TEST_EVENT_HANDLER.getAll(CoreDhApiTestEvent.class); + Assert.assertEquals("Bound list doesn't contain the correct number of items.", 2, afterRenderEventList.size()); + // object one + Assert.assertNotNull("Event not bound.", afterRenderEventList.get(0)); + Assert.assertEquals("First event object setup incorrectly.", null, afterRenderEventList.get(0).getTestValue()); + // object two + Assert.assertNotNull("Event not bound.", afterRenderEventList.get(1)); + Assert.assertEquals("First event object setup incorrectly.", null, afterRenderEventList.get(1).getTestValue()); + + + // event firing + Assert.assertEquals("fireAllEvents canceled returned canceled incorrectly.", true, TEST_EVENT_HANDLER.fireAllEvents(CoreDhApiTestEvent.class, true)); + // object one + Assert.assertEquals("Event not fired for first object.", true, afterRenderEventList.get(0).getTestValue()); + // object two + Assert.assertEquals("Event not fired for second object.", true, afterRenderEventList.get(1).getTestValue()); + + + // unbind + CoreDhApiTestEvent unboundEvent = afterRenderEventList.get(0); + Assert.assertTrue("Unbind should've removed item.", TEST_EVENT_HANDLER.unbind(CoreDhApiTestEvent.class, DhTestEvent.class)); + Assert.assertFalse("Unbind should've already removed item.", TEST_EVENT_HANDLER.unbind(CoreDhApiTestEvent.class, DhTestEvent.class)); + + // check unbinding + afterRenderEventList = TEST_EVENT_HANDLER.getAll(CoreDhApiTestEvent.class); + Assert.assertEquals("Unbound list doesn't contain the correct number of items.", 1, afterRenderEventList.size()); + Assert.assertNotNull("Unbinding removed all items.", afterRenderEventList.get(0)); + + + // check unbound event firing + Assert.assertEquals("fireAllEvents canceled returned canceled incorrectly.", false, TEST_EVENT_HANDLER.fireAllEvents(CoreDhApiTestEvent.class, false)); + // remaining event + Assert.assertEquals("Event not fired for remaining object.", false, ((DhTestEventAlt) afterRenderEventList.get(0)).eventFiredValue); + // unbound event + Assert.assertEquals("Event fired for unbound object.", true, unboundEvent.getTestValue()); + + } + +} + + + diff --git a/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/objects/events/abstractEvents/CoreDhApiTestEvent.java b/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/objects/events/abstractEvents/CoreDhApiTestEvent.java new file mode 100644 index 000000000..e7bd26342 --- /dev/null +++ b/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/objects/events/abstractEvents/CoreDhApiTestEvent.java @@ -0,0 +1,15 @@ +package com.seibel.lod.core.api.external.coreImplementations.objects.events.abstractEvents; + +import com.seibel.lod.core.api.external.coreImplementations.interfaces.events.ICoreDhApiEvent; + +/** + * Only used for unit testing + * + * @author James Seibel + * @version 2022-9-11 + */ +public abstract class CoreDhApiTestEvent implements ICoreDhApiEvent +{ + public abstract boolean getTestValue(); + +} \ No newline at end of file diff --git a/core/src/test/java/testItems/eventInjection/abstractObjects/DhApiTestEvent.java b/core/src/test/java/testItems/eventInjection/abstractObjects/DhApiTestEvent.java deleted file mode 100644 index bb4f223f4..000000000 --- a/core/src/test/java/testItems/eventInjection/abstractObjects/DhApiTestEvent.java +++ /dev/null @@ -1,37 +0,0 @@ -package testItems.eventInjection.abstractObjects; - -import com.seibel.lod.core.api.external.coreImplementations.interfaces.events.ICoreDhApiEvent; - -/** - * A dummy event implementation used for unit testing. - * - * @author James Seibel - * @version 2022-9-8 - */ -public abstract class DhApiTestEvent implements ICoreDhApiEvent -{ - /** - * Test event. - * - * @return whether the event should be canceled or not. - */ - public abstract boolean test(Boolean input); - - /** - * Normal DhApiEvent classes shouldn't have any other methods like this. - * This is just for testing. - */ - public abstract Boolean getTestValue(); - - - //=========================// - // internal DH API methods // - //=========================// - - @Override - public final boolean fireEvent(Boolean input) { return test(input); } - - @Override - public final boolean getCancelable() { return true; } - -} \ No newline at end of file diff --git a/core/src/test/java/testItems/eventInjection/objects/DhTestEvent.java b/core/src/test/java/testItems/eventInjection/objects/DhTestEvent.java deleted file mode 100644 index 704def5ca..000000000 --- a/core/src/test/java/testItems/eventInjection/objects/DhTestEvent.java +++ /dev/null @@ -1,28 +0,0 @@ -package testItems.eventInjection.objects; - -import testItems.eventInjection.abstractObjects.DhApiTestEvent; - -/** - * Dummy test event for unit tests. - * - * @author James Seibel - * @version 2022-9-8 - */ -public class DhTestEvent extends DhApiTestEvent -{ - public Boolean eventFiredValue = null; - - @Override - public boolean test(Boolean cancelEvent) - { - this.eventFiredValue = cancelEvent; - return cancelEvent; - } - - @Override - public Boolean getTestValue() { return this.eventFiredValue; } - - @Override - public boolean removeAfterFiring() { return false; } - -} diff --git a/core/src/test/java/testItems/eventInjection/objects/DhTestEventAlt.java b/core/src/test/java/testItems/eventInjection/objects/DhTestEventAlt.java deleted file mode 100644 index 5935afeb7..000000000 --- a/core/src/test/java/testItems/eventInjection/objects/DhTestEventAlt.java +++ /dev/null @@ -1,28 +0,0 @@ -package testItems.eventInjection.objects; - -import testItems.eventInjection.abstractObjects.DhApiTestEvent; - -/** - * Dummy test event for unit tests. - * - * @author James Seibel - * @version 2022-9-8 - */ -public class DhTestEventAlt extends DhApiTestEvent -{ - public Boolean eventFiredValue = null; - - @Override - public boolean test(Boolean cancelEvent) - { - this.eventFiredValue = cancelEvent; - return cancelEvent; - } - - @Override - public Boolean getTestValue() { return this.eventFiredValue; } - - @Override - public boolean removeAfterFiring() { return false; } - -} diff --git a/core/src/test/java/tests/DependencyInjectorTest.java b/core/src/test/java/tests/DependencyInjectorTest.java index a0dbe16cc..2f01fda45 100644 --- a/core/src/test/java/tests/DependencyInjectorTest.java +++ b/core/src/test/java/tests/DependencyInjectorTest.java @@ -7,9 +7,6 @@ import com.seibel.lod.core.handlers.dependencyInjection.*; import org.junit.Assert; import org.junit.Test; -import testItems.eventInjection.abstractObjects.DhApiTestEvent; -import testItems.eventInjection.objects.DhTestEvent; -import testItems.eventInjection.objects.DhTestEventAlt; import testItems.overrideInjection.interfaces.IOverrideTest; import testItems.overrideInjection.objects.OverrideTestAssembly; import testItems.overrideInjection.objects.OverrideTestCore; @@ -21,12 +18,10 @@ import testItems.singletonInjection.objects.ConcreteSingletonTestOne; import testItems.singletonInjection.objects.ConcreteSingletonTestTwo; import testItems.worldGeneratorInjection.objects.*; -import java.util.ArrayList; - /** * @author James Seibel - * @version 2022-9-5 + * @version 2022-9-11 */ public class DependencyInjectorTest { @@ -96,67 +91,6 @@ public class DependencyInjectorTest } - @Test - public void testEventDependencies() // this also tests list dependencies since there can be more than one event handler bound per event - { - // Injector setup - DhApiEventInjector TEST_EVENT_HANDLER = new DhApiEventInjector(); - - - // pre-dependency setup - Assert.assertNull("Nothing should have been bound.", TEST_EVENT_HANDLER.get(DhApiTestEvent.class)); - - - // dependency setup - TEST_EVENT_HANDLER.bind(DhApiTestEvent.class, new DhTestEvent()); - TEST_EVENT_HANDLER.bind(DhApiTestEvent.class, new DhTestEventAlt()); - TEST_EVENT_HANDLER.runDelayedSetup(); - - - // get first - DhApiTestEvent afterRenderEvent = TEST_EVENT_HANDLER.get(DhApiTestEvent.class); - Assert.assertNotNull("Event not bound.", afterRenderEvent); - - - // get list - ArrayList afterRenderEventList = TEST_EVENT_HANDLER.getAll(DhApiTestEvent.class); - Assert.assertEquals("Bound list doesn't contain the correct number of items.", 2, afterRenderEventList.size()); - // object one - Assert.assertNotNull("Event not bound.", afterRenderEventList.get(0)); - Assert.assertEquals("First event object setup incorrectly.", null, afterRenderEventList.get(0).getTestValue()); - // object two - Assert.assertNotNull("Event not bound.", afterRenderEventList.get(1)); - Assert.assertEquals("First event object setup incorrectly.", null, afterRenderEventList.get(1).getTestValue()); - - - // event firing - Assert.assertEquals("fireAllEvents canceled returned canceled incorrectly.", true, TEST_EVENT_HANDLER.fireAllEvents(DhApiTestEvent.class, true)); - // object one - Assert.assertEquals("Event not fired for first object.", true, afterRenderEventList.get(0).getTestValue()); - // object two - Assert.assertEquals("Event not fired for second object.", true, afterRenderEventList.get(1).getTestValue()); - - - // unbind - DhApiTestEvent unboundEvent = afterRenderEventList.get(0); - Assert.assertTrue("Unbind should've removed item.", TEST_EVENT_HANDLER.unbind(DhApiTestEvent.class, DhTestEvent.class)); - Assert.assertFalse("Unbind should've already removed item.", TEST_EVENT_HANDLER.unbind(DhApiTestEvent.class, DhTestEvent.class)); - - // check unbinding - afterRenderEventList = TEST_EVENT_HANDLER.getAll(DhApiTestEvent.class); - Assert.assertEquals("Unbound list doesn't contain the correct number of items.", 1, afterRenderEventList.size()); - Assert.assertNotNull("Unbinding removed all items.", afterRenderEventList.get(0)); - - - // check unbound event firing - Assert.assertEquals("fireAllEvents canceled returned canceled incorrectly.", false, TEST_EVENT_HANDLER.fireAllEvents(DhApiTestEvent.class, false)); - // remaining event - Assert.assertEquals("Event not fired for remaining object.", false, ((DhTestEventAlt) afterRenderEventList.get(0)).eventFiredValue); - // unbound event - Assert.assertEquals("Event fired for unbound object.", true, unboundEvent.getTestValue()); - - } - @Test public void testOverrideInjection() {