diff --git a/src/test/java/testItems/worldGeneratorInjection/objects/LevelWrapperTest.java b/src/test/java/testItems/worldGeneratorInjection/objects/LevelWrapperTest.java new file mode 100644 index 000000000..2b2059a25 --- /dev/null +++ b/src/test/java/testItems/worldGeneratorInjection/objects/LevelWrapperTest.java @@ -0,0 +1,35 @@ +package testItems.worldGeneratorInjection.objects; + +import com.seibel.lod.core.api.external.items.enums.worldGeneration.EDhApiLevelType; +import com.seibel.lod.core.api.external.items.interfaces.world.IDhApiDimensionTypeWrapper; +import com.seibel.lod.core.api.external.items.interfaces.world.IDhApiLevelWrapper; + +/** + * Stub implementation of a Level wrapper for basic unit testing. + * + * @author James Seibel + * @version 2022-7-27 + */ +public class LevelWrapperTest implements IDhApiLevelWrapper +{ + @Override + public Object getWrappedMcObject_UNSAFE() { return null; } + + @Override + public IDhApiDimensionTypeWrapper getDimensionType() { return null; } + + @Override + public EDhApiLevelType getLevelType() { return EDhApiLevelType.UNKNOWN; } + + @Override + public boolean hasCeiling() { return false; } + + @Override + public boolean hasSkyLight() { return false; } + + @Override + public int getHeight() { return 0; } + + @Override + public int getSeaLevel() { return 0; } +} diff --git a/src/test/java/tests/DependencyInjectorTest.java b/src/test/java/tests/DependencyInjectorTest.java index 635d86de5..bf3a770f5 100644 --- a/src/test/java/tests/DependencyInjectorTest.java +++ b/src/test/java/tests/DependencyInjectorTest.java @@ -3,6 +3,7 @@ package tests; import com.seibel.lod.core.api.external.items.enums.override.EDhApiOverridePriority; import com.seibel.lod.core.api.external.items.interfaces.override.IDhApiOverrideable; import com.seibel.lod.core.api.external.items.interfaces.override.IDhApiWorldGenerator; +import com.seibel.lod.core.api.external.items.interfaces.world.IDhApiLevelWrapper; import com.seibel.lod.core.enums.override.EOverridePriority; import com.seibel.lod.core.handlers.dependencyInjection.*; @@ -21,10 +22,7 @@ import testItems.singletonInjection.objects.ConcreteSingletonTestTwo; import testItems.eventInjection.abstractObjects.DhApiTestEvent; import testItems.overrideInjection.interfaces.IOverrideTest; import testItems.overrideInjection.objects.OverrideTestAssembly; -import testItems.worldGeneratorInjection.objects.WorldGeneratorTestAssembly; -import testItems.worldGeneratorInjection.objects.WorldGeneratorTestCore; -import testItems.worldGeneratorInjection.objects.WorldGeneratorTestPrimary; -import testItems.worldGeneratorInjection.objects.WorldGeneratorTestSecondary; +import testItems.worldGeneratorInjection.objects.*; import java.util.ArrayList; @@ -238,7 +236,7 @@ public class DependencyInjectorTest } @Test - public void testWorldGeneratorInjection() + public void testBackupWorldGeneratorInjection() { WorldGeneratorInjector TEST_INJECTOR = new WorldGeneratorInjector(WorldGeneratorTestAssembly.getPackagePath(2)); WorldGeneratorInjector CORE_INJECTOR = new WorldGeneratorInjector(); @@ -256,9 +254,6 @@ public class DependencyInjectorTest WorldGeneratorTestPrimary primaryGenerator = new WorldGeneratorTestPrimary(); - - // TODO need core package overriding - // core generator binding try { TEST_INJECTOR.bind(coreGenerator); } catch (IllegalArgumentException e) { Assert.fail("Core generator should be bindable for test package injector."); } @@ -294,13 +289,63 @@ public class DependencyInjectorTest Assert.assertEquals("Override returned incorrect override type.", generator.getOverrideType(), EDhApiOverridePriority.PRIMARY); Assert.assertEquals("Incorrect override object returned.", generator.getThreadingMode(), WorldGeneratorTestPrimary.THREAD_MODE); - + + // in-line get // (make sure the returned type is correct and compiles, the actual value doesn't matter) TEST_INJECTOR.get().getThreadingMode(); } + @Test + public void testSpecificLevelWorldGeneratorInjection() + { + WorldGeneratorInjector TEST_INJECTOR = new WorldGeneratorInjector(WorldGeneratorTestAssembly.getPackagePath(2)); + + + // pre-dependency setup + Assert.assertNull("Nothing should have been bound.", TEST_INJECTOR.get()); + + + // variables to use later + IDhApiWorldGenerator generator; + WorldGeneratorTestCore backupGenerator = new WorldGeneratorTestCore(); + WorldGeneratorTestPrimary levelGenerator = new WorldGeneratorTestPrimary(); + + IDhApiLevelWrapper boundLevel = new LevelWrapperTest(); + IDhApiLevelWrapper unboundLevel = new LevelWrapperTest(); + + + + // backup generator binding + try { TEST_INJECTOR.bind(backupGenerator); } catch (IllegalArgumentException e) { Assert.fail("Core generator should be bindable for test package injector."); } + + + // get backup generator + generator = TEST_INJECTOR.get(); + Assert.assertNotNull("Backup generator not bound.", generator); + Assert.assertEquals("Incorrect backup generator bound.", generator.getOverrideType(), EDhApiOverridePriority.CORE); + Assert.assertEquals("Incorrect backup generator bound.", generator.getThreadingMode(), WorldGeneratorTestCore.THREAD_MODE); + + + // bind level specific + try { TEST_INJECTOR.bind(boundLevel, levelGenerator); } catch (IllegalArgumentException e) { Assert.fail("Core generator should be bindable for test package injector."); } + + + // get bound level generator + generator = TEST_INJECTOR.get(boundLevel); + Assert.assertNotNull("Level generator not bound.", generator); + Assert.assertEquals("Incorrect level generator bound.", generator.getOverrideType(), EDhApiOverridePriority.PRIMARY); + Assert.assertEquals("Incorrect level generator bound.", generator.getThreadingMode(), WorldGeneratorTestPrimary.THREAD_MODE); + + // get unbound level generator + generator = TEST_INJECTOR.get(unboundLevel); + Assert.assertNotNull("Backup level generator not bound.", generator); + Assert.assertEquals("Incorrect level generator bound.", generator.getOverrideType(), EDhApiOverridePriority.CORE); + Assert.assertEquals("Incorrect level generator bound.", generator.getThreadingMode(), WorldGeneratorTestCore.THREAD_MODE); + + } + }