From 080279644fae7c55dbd1d7038111af8b27d48e30 Mon Sep 17 00:00:00 2001 From: Hanziness Date: Wed, 11 Apr 2018 20:34:53 +0200 Subject: [PATCH 01/19] Added 'monster-count' as an option for attribute linking --- .../java/codemetropolis/toolchain/mapping/model/Linking.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/codemetropolis-toolchain-mapping/src/main/java/codemetropolis/toolchain/mapping/model/Linking.java b/sources/codemetropolis-toolchain-mapping/src/main/java/codemetropolis/toolchain/mapping/model/Linking.java index f14233fd..54e1c552 100644 --- a/sources/codemetropolis-toolchain-mapping/src/main/java/codemetropolis/toolchain/mapping/model/Linking.java +++ b/sources/codemetropolis-toolchain-mapping/src/main/java/codemetropolis/toolchain/mapping/model/Linking.java @@ -24,7 +24,7 @@ public class Linking { static { SUPPORTED_TARGETS.put(Type.FLOOR, new String[]{"width", "height", "length", "character", "external_character", "torches"}); SUPPORTED_TARGETS.put(Type.CELLAR, new String[]{"width", "height", "length", "character", "external_character", "torches"}); - SUPPORTED_TARGETS.put(Type.GARDEN, new String[]{"tree-ratio", "mushroom-ratio", "flower-ratio"}); + SUPPORTED_TARGETS.put(Type.GARDEN, new String[]{"tree-ratio", "mushroom-ratio", "flower-ratio", "monster-count"}); // monster-ratio added by hand SUPPORTED_TARGETS.put(Type.GROUND, new String[]{}); } From 21ccfad293c9e3ca5efbe1a54b0d26f8c7ecfd37 Mon Sep 17 00:00:00 2001 From: Hanziness Date: Wed, 11 Apr 2018 20:35:24 +0200 Subject: [PATCH 02/19] Added example mapping file that maps major warnings to monster-count --- ...urcemeter_mapping_example_2_0_monsters.xml | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 examples/mapping/sourcemeter_mapping_example_2_0_monsters.xml diff --git a/examples/mapping/sourcemeter_mapping_example_2_0_monsters.xml b/examples/mapping/sourcemeter_mapping_example_2_0_monsters.xml new file mode 100644 index 00000000..be77ca6f --- /dev/null +++ b/examples/mapping/sourcemeter_mapping_example_2_0_monsters.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 50366b4192b0a0d18e196d9187e3188fb5a36961 Mon Sep 17 00:00:00 2001 From: Hanziness Date: Sun, 15 Apr 2018 19:18:59 +0200 Subject: [PATCH 03/19] Monster-count in mapping example now has 5 levels --- examples/mapping/sourcemeter_mapping_example_2_0_monsters.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/examples/mapping/sourcemeter_mapping_example_2_0_monsters.xml b/examples/mapping/sourcemeter_mapping_example_2_0_monsters.xml index be77ca6f..c9a6d59e 100644 --- a/examples/mapping/sourcemeter_mapping_example_2_0_monsters.xml +++ b/examples/mapping/sourcemeter_mapping_example_2_0_monsters.xml @@ -15,6 +15,9 @@ + + + From e6e9e761282665389d95582ca81f808cae4e02d8 Mon Sep 17 00:00:00 2001 From: bkarola <20167233+bkarola@users.noreply.github.com> Date: Sun, 15 Apr 2018 19:30:55 +0200 Subject: [PATCH 04/19] Spawner class added --- .../rendering/model/primitive/Spawner.java | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 sources/codemetropolis-toolchain-rendering/src/main/java/codemetropolis/toolchain/rendering/model/primitive/Spawner.java diff --git a/sources/codemetropolis-toolchain-rendering/src/main/java/codemetropolis/toolchain/rendering/model/primitive/Spawner.java b/sources/codemetropolis-toolchain-rendering/src/main/java/codemetropolis/toolchain/rendering/model/primitive/Spawner.java new file mode 100644 index 00000000..f2d6d5af --- /dev/null +++ b/sources/codemetropolis-toolchain-rendering/src/main/java/codemetropolis/toolchain/rendering/model/primitive/Spawner.java @@ -0,0 +1,27 @@ +package codemetropolis.toolchain.rendering.model.primitive; + +import java.io.File; + +import codemetropolis.toolchain.commons.cmxml.Point; +import codemetropolis.toolchain.rendering.model.BasicBlock; + +public class Spawner implements Primitive { + + private Point position; + + public Spawner(int x, int y, int z) { + super(); + this.position = new Point(x, y, z); + } + + @Override + public int toCSVFile(File directory) { + new Boxel(new BasicBlock((short) 52), position).toCSVFile(directory); + return 1; + } + @Override + public int getNumberOfBlocks() { + return 1; + } + +} From 5e98d4aef21c04cf107b7b6a8ee8f2864d9a3d9c Mon Sep 17 00:00:00 2001 From: bkarola <20167233+bkarola@users.noreply.github.com> Date: Sun, 15 Apr 2018 19:35:51 +0200 Subject: [PATCH 05/19] Spawners added to Garden 4 spawners added to every building --- .../toolchain/rendering/model/building/Garden.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/sources/codemetropolis-toolchain-rendering/src/main/java/codemetropolis/toolchain/rendering/model/building/Garden.java b/sources/codemetropolis-toolchain-rendering/src/main/java/codemetropolis/toolchain/rendering/model/building/Garden.java index 88b163b9..cef041a2 100644 --- a/sources/codemetropolis-toolchain-rendering/src/main/java/codemetropolis/toolchain/rendering/model/building/Garden.java +++ b/sources/codemetropolis-toolchain-rendering/src/main/java/codemetropolis/toolchain/rendering/model/building/Garden.java @@ -9,6 +9,7 @@ import codemetropolis.toolchain.rendering.model.pattern.RepeationPattern; import codemetropolis.toolchain.rendering.model.pattern.YSplitPattern; import codemetropolis.toolchain.rendering.model.primitive.SignPost; +import codemetropolis.toolchain.rendering.model.primitive.Spawner; import codemetropolis.toolchain.rendering.model.primitive.SolidBox; import codemetropolis.toolchain.rendering.util.Orientation; @@ -23,6 +24,7 @@ public Garden(Buildable innerBuildable) throws BuildingTypeMismatchException { prepareBase(); prepareDoor(); prepareSigns(); + prepareSpawners(); } private void prepareBase( ) { @@ -144,5 +146,12 @@ private void prepareSigns( ) { primitives.add(new SignPost(position.getX(), position.getY() + 2, position.getZ() + size.getZ() - 1, SignPost.Orientation.SOUTHWEST, innerBuildable.getName())); primitives.add(new SignPost(position.getX() + size.getX() - 1, position.getY() + 2, position.getZ() + size.getZ() - 1, SignPost.Orientation.SOUTHEAST, innerBuildable.getName())); } + + private void prepareSpawners( ) { + primitives.add(new Spawner(position.getX() + size.getX() / 2, position.getY(), position.getZ() - 3)); + primitives.add(new Spawner(position.getX() + size.getX() / 2, position.getY(), position.getZ() + size.getZ() + 2)); + primitives.add(new Spawner(position.getX() - 3, position.getY(), position.getZ() + size.getZ() / 2)); + primitives.add(new Spawner(position.getX() + size.getX() + 2, position.getY(), position.getZ() + size.getZ() / 2)); + } } From c12513c8c94e90a447edd990f50fe385e347bc44 Mon Sep 17 00:00:00 2001 From: bkarola <20167233+bkarola@users.noreply.github.com> Date: Sun, 15 Apr 2018 20:05:44 +0200 Subject: [PATCH 06/19] Number of spawners by monster-count --- .../rendering/model/building/Garden.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/sources/codemetropolis-toolchain-rendering/src/main/java/codemetropolis/toolchain/rendering/model/building/Garden.java b/sources/codemetropolis-toolchain-rendering/src/main/java/codemetropolis/toolchain/rendering/model/building/Garden.java index cef041a2..b06adb77 100644 --- a/sources/codemetropolis-toolchain-rendering/src/main/java/codemetropolis/toolchain/rendering/model/building/Garden.java +++ b/sources/codemetropolis-toolchain-rendering/src/main/java/codemetropolis/toolchain/rendering/model/building/Garden.java @@ -14,6 +14,8 @@ import codemetropolis.toolchain.rendering.util.Orientation; public class Garden extends Building { + + int monster_count; public Garden(Buildable innerBuildable) throws BuildingTypeMismatchException { super(innerBuildable); @@ -30,6 +32,11 @@ public Garden(Buildable innerBuildable) throws BuildingTypeMismatchException { private void prepareBase( ) { BasicBlock _fnc = new BasicBlock( "minecraft:fence" ); BasicBlock _sns = new BasicBlock( "minecraft:sandstone" ); + + monster_count = innerBuildable.hasAttribute("monster-count") + ? Integer.parseInt( innerBuildable.getAttributeValue ("monster-count") ) + : 0; + RandomPattern _flowers = new RandomPattern( new RepeationPattern( new BasicBlock[][][]{ { { BasicBlock.NonBlock } } } ) ); RandomPattern _redOrYellow = new RandomPattern( new RepeationPattern( new BasicBlock[][][]{ { { new BasicBlock( "minecraft:yellow_flower" ) } } } ) ); @@ -148,10 +155,10 @@ private void prepareSigns( ) { } private void prepareSpawners( ) { - primitives.add(new Spawner(position.getX() + size.getX() / 2, position.getY(), position.getZ() - 3)); - primitives.add(new Spawner(position.getX() + size.getX() / 2, position.getY(), position.getZ() + size.getZ() + 2)); - primitives.add(new Spawner(position.getX() - 3, position.getY(), position.getZ() + size.getZ() / 2)); - primitives.add(new Spawner(position.getX() + size.getX() + 2, position.getY(), position.getZ() + size.getZ() / 2)); + if (monster_count > 0) primitives.add(new Spawner(position.getX() + size.getX() / 2, position.getY(), position.getZ() - 3)); + if (monster_count > 1) primitives.add(new Spawner(position.getX() + size.getX() / 2, position.getY(), position.getZ() + size.getZ() + 2)); + if (monster_count > 2) primitives.add(new Spawner(position.getX() - 3, position.getY(), position.getZ() + size.getZ() / 2)); + if (monster_count > 3) primitives.add(new Spawner(position.getX() + size.getX() + 2, position.getY(), position.getZ() + size.getZ() / 2)); } } From cf5f96f5f5dcccfe9839e39ca66d7bdc862c5721 Mon Sep 17 00:00:00 2001 From: Hanziness Date: Fri, 20 Apr 2018 12:01:18 +0200 Subject: [PATCH 07/19] Added unit test cases for the converter's ConverterLoader class --- .../control/ConverterLoaderTest.java | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 sources/codemetropolis-toolchain-converter/src/test/java/codemetropolis/toolchain/converter/control/ConverterLoaderTest.java diff --git a/sources/codemetropolis-toolchain-converter/src/test/java/codemetropolis/toolchain/converter/control/ConverterLoaderTest.java b/sources/codemetropolis-toolchain-converter/src/test/java/codemetropolis/toolchain/converter/control/ConverterLoaderTest.java new file mode 100644 index 00000000..b393b625 --- /dev/null +++ b/sources/codemetropolis-toolchain-converter/src/test/java/codemetropolis/toolchain/converter/control/ConverterLoaderTest.java @@ -0,0 +1,30 @@ +package codemetropolis.toolchain.converter.control; + +import java.util.HashMap; +import java.util.Map; + +import codemetropolis.toolchain.commons.cdf.converter.CdfConverter; +import codemetropolis.toolchain.converter.control.*; +import codemetropolis.toolchain.converter.sonarqube.SonarQubeConverter; +import codemetropolis.toolchain.converter.sourcemeter.GraphConverter; +import junit.framework.TestCase; + +public class ConverterLoaderTest extends TestCase { + + CdfConverter result; + + + public void setup() { + result = null; + } + + public void testLoadSourceMeter() { + result = ConverterLoader.load(ConverterType.SOURCEMETER, new HashMap()); + assert(result instanceof GraphConverter); + } + + public void testLoadSonarQube() { + result = ConverterLoader.load(ConverterType.SONARQUBE, new HashMap()); + assert(result instanceof SonarQubeConverter); + } +} From 9c92cc12bc6dba267994e74a9d422217f4425bad Mon Sep 17 00:00:00 2001 From: Hanziness Date: Fri, 20 Apr 2018 14:10:56 +0200 Subject: [PATCH 08/19] Added unit tests for the ConverterExecutorArgs constructor in the converter tool --- .../converter/ConverterExecutorArgsTest.java | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 sources/codemetropolis-toolchain-converter/src/test/java/codemetropolis/toolchain/converter/ConverterExecutorArgsTest.java diff --git a/sources/codemetropolis-toolchain-converter/src/test/java/codemetropolis/toolchain/converter/ConverterExecutorArgsTest.java b/sources/codemetropolis-toolchain-converter/src/test/java/codemetropolis/toolchain/converter/ConverterExecutorArgsTest.java new file mode 100644 index 00000000..68253809 --- /dev/null +++ b/sources/codemetropolis-toolchain-converter/src/test/java/codemetropolis/toolchain/converter/ConverterExecutorArgsTest.java @@ -0,0 +1,30 @@ +package codemetropolis.toolchain.converter; + +import java.util.HashMap; + +import codemetropolis.toolchain.converter.control.ConverterType; +import junit.framework.TestCase; + +public class ConverterExecutorArgsTest extends TestCase { + ConverterExecutorArgs result; + + public void setup () { + result = null; + } + + public void testConverterExecutorArgsConstructorNoParams() { + result = new ConverterExecutorArgs(ConverterType.SOURCEMETER, "testSource", "testOutput"); + assertEquals(result.getOutputFile(), "testOutput"); + assertEquals(result.getSource(), "testSource"); + assertEquals(result.getType(), ConverterType.SOURCEMETER); + } + + public void testConverterExecutorArgsConstructor() { + result = new ConverterExecutorArgs(ConverterType.SONARQUBE, "testSource", "testOutput", new HashMap()); + assertEquals(result.getOutputFile(), "testOutput"); + assertEquals(result.getSource(), "testSource"); + assertEquals(result.getType(), ConverterType.SONARQUBE); + assertNotNull(result.getParams()); + assertTrue(result.getParams().isEmpty()); + } +} From 3d74fbb21d58fcb78aaa6ee8e5a0124cde0620b8 Mon Sep 17 00:00:00 2001 From: Hanziness Date: Fri, 20 Apr 2018 14:11:46 +0200 Subject: [PATCH 09/19] Added unit tests for the MappingExecutorArgs class in the mapping tool --- .../mapping/MappingExecutorArgsTest.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 sources/codemetropolis-toolchain-mapping/src/test/java/codemetropolis/toolchain/mapping/MappingExecutorArgsTest.java diff --git a/sources/codemetropolis-toolchain-mapping/src/test/java/codemetropolis/toolchain/mapping/MappingExecutorArgsTest.java b/sources/codemetropolis-toolchain-mapping/src/test/java/codemetropolis/toolchain/mapping/MappingExecutorArgsTest.java new file mode 100644 index 00000000..3c71fc76 --- /dev/null +++ b/sources/codemetropolis-toolchain-mapping/src/test/java/codemetropolis/toolchain/mapping/MappingExecutorArgsTest.java @@ -0,0 +1,22 @@ +package codemetropolis.toolchain.mapping; + +import junit.framework.TestCase; + +public class MappingExecutorArgsTest extends TestCase { + + MappingExecutorArgs result; + + public void setup() { + result = null; + } + + public void testMappingExecutorArgs() { + result = new MappingExecutorArgs("testCDF", "testOutput", "testMapping", 1.0, true); + assertEquals(result.getCdfFile(), "testCDF"); + assertEquals(result.getOutputFile(), "testOutput"); + assertEquals(result.getMappingFile(), "testMapping"); + assertEquals(result.getScale(), 1.0); + assertEquals(result.isHierarchyValidationEnabled(), true); + } + +} From 036aa37247d83c047db0bf92aa6f8f351f13db8b Mon Sep 17 00:00:00 2001 From: Hanziness Date: Fri, 20 Apr 2018 16:41:41 +0200 Subject: [PATCH 10/19] Swapped arguments to match JUnit 'expected' and 'actual' parameters in ConverterExecutorArgs and MappingExecutorArgs tests --- .../converter/ConverterExecutorArgsTest.java | 24 +++++++++---------- .../mapping/MappingExecutorArgsTest.java | 16 ++++++------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/sources/codemetropolis-toolchain-converter/src/test/java/codemetropolis/toolchain/converter/ConverterExecutorArgsTest.java b/sources/codemetropolis-toolchain-converter/src/test/java/codemetropolis/toolchain/converter/ConverterExecutorArgsTest.java index 68253809..561d0a7f 100644 --- a/sources/codemetropolis-toolchain-converter/src/test/java/codemetropolis/toolchain/converter/ConverterExecutorArgsTest.java +++ b/sources/codemetropolis-toolchain-converter/src/test/java/codemetropolis/toolchain/converter/ConverterExecutorArgsTest.java @@ -6,25 +6,25 @@ import junit.framework.TestCase; public class ConverterExecutorArgsTest extends TestCase { - ConverterExecutorArgs result; + ConverterExecutorArgs testObj; public void setup () { - result = null; + testObj = null; } public void testConverterExecutorArgsConstructorNoParams() { - result = new ConverterExecutorArgs(ConverterType.SOURCEMETER, "testSource", "testOutput"); - assertEquals(result.getOutputFile(), "testOutput"); - assertEquals(result.getSource(), "testSource"); - assertEquals(result.getType(), ConverterType.SOURCEMETER); + testObj = new ConverterExecutorArgs(ConverterType.SOURCEMETER, "testSource", "testOutput"); + assertEquals("testOutput", testObj.getOutputFile()); + assertEquals("testSource", testObj.getSource()); + assertEquals(ConverterType.SOURCEMETER, testObj.getType()); } public void testConverterExecutorArgsConstructor() { - result = new ConverterExecutorArgs(ConverterType.SONARQUBE, "testSource", "testOutput", new HashMap()); - assertEquals(result.getOutputFile(), "testOutput"); - assertEquals(result.getSource(), "testSource"); - assertEquals(result.getType(), ConverterType.SONARQUBE); - assertNotNull(result.getParams()); - assertTrue(result.getParams().isEmpty()); + testObj = new ConverterExecutorArgs(ConverterType.SONARQUBE, "testSource", "testOutput", new HashMap()); + assertEquals("testOutput", testObj.getOutputFile()); + assertEquals("testSource", testObj.getSource()); + assertEquals(ConverterType.SONARQUBE, testObj.getType()); + assertNotNull(testObj.getParams()); + assertTrue(testObj.getParams().isEmpty()); } } diff --git a/sources/codemetropolis-toolchain-mapping/src/test/java/codemetropolis/toolchain/mapping/MappingExecutorArgsTest.java b/sources/codemetropolis-toolchain-mapping/src/test/java/codemetropolis/toolchain/mapping/MappingExecutorArgsTest.java index 3c71fc76..31b3df13 100644 --- a/sources/codemetropolis-toolchain-mapping/src/test/java/codemetropolis/toolchain/mapping/MappingExecutorArgsTest.java +++ b/sources/codemetropolis-toolchain-mapping/src/test/java/codemetropolis/toolchain/mapping/MappingExecutorArgsTest.java @@ -4,19 +4,19 @@ public class MappingExecutorArgsTest extends TestCase { - MappingExecutorArgs result; + MappingExecutorArgs testObj; public void setup() { - result = null; + testObj = null; } public void testMappingExecutorArgs() { - result = new MappingExecutorArgs("testCDF", "testOutput", "testMapping", 1.0, true); - assertEquals(result.getCdfFile(), "testCDF"); - assertEquals(result.getOutputFile(), "testOutput"); - assertEquals(result.getMappingFile(), "testMapping"); - assertEquals(result.getScale(), 1.0); - assertEquals(result.isHierarchyValidationEnabled(), true); + testObj = new MappingExecutorArgs("testCDF", "testOutput", "testMapping", 1.0, true); + assertEquals("testCDF", testObj.getCdfFile()); + assertEquals("testOutput", testObj.getOutputFile()); + assertEquals("testMapping", testObj.getMappingFile()); + assertEquals(1.0, testObj.getScale()); + assertEquals(true, testObj.isHierarchyValidationEnabled()); } } From 1a8b78eb5940d7efcf1b500e5757cbb3801849b2 Mon Sep 17 00:00:00 2001 From: Hanziness Date: Fri, 20 Apr 2018 16:42:16 +0200 Subject: [PATCH 11/19] Unit tests added for Conversion and NormalizeConversion classes in the mapping tool --- .../mapping/conversions/ConversionTest.java | 56 +++++++++++++++++++ .../conversions/NormalizeConversionTest.java | 28 ++++++++++ 2 files changed, 84 insertions(+) create mode 100644 sources/codemetropolis-toolchain-mapping/src/test/java/codemetropolis/toolchain/mapping/conversions/ConversionTest.java create mode 100644 sources/codemetropolis-toolchain-mapping/src/test/java/codemetropolis/toolchain/mapping/conversions/NormalizeConversionTest.java diff --git a/sources/codemetropolis-toolchain-mapping/src/test/java/codemetropolis/toolchain/mapping/conversions/ConversionTest.java b/sources/codemetropolis-toolchain-mapping/src/test/java/codemetropolis/toolchain/mapping/conversions/ConversionTest.java new file mode 100644 index 00000000..063063eb --- /dev/null +++ b/sources/codemetropolis-toolchain-mapping/src/test/java/codemetropolis/toolchain/mapping/conversions/ConversionTest.java @@ -0,0 +1,56 @@ +package codemetropolis.toolchain.mapping.conversions; + +import codemetropolis.toolchain.mapping.model.Parameter; +import junit.framework.TestCase; + +public class ConversionTest extends TestCase { + + Conversion result = null; + + public void setup() { + result = null; + } + + public void testCreateFromName() { + result = Conversion.createFromName("to_int"); + assert(result instanceof ToIntConversion); + + result = Conversion.createFromName("to_double"); + assert(result instanceof ToDoubleConversion); + + result = Conversion.createFromName("multiply"); + assert(result instanceof MultiplyConversion); + + result = Conversion.createFromName("quantization"); + assert(result instanceof QuantizationConversion); + + result = Conversion.createFromName("switch"); + assert(result instanceof SwitchConversion); + + result = Conversion.createFromName("abcd"); + assertNull(result); + } + + public void testToDouble() { + double testResult; + + testResult = Conversion.toDouble("42"); + assertEquals(42.0, testResult); + + testResult = Conversion.toDouble((double)42.0); + assertEquals(42.0, testResult); + } + + public void testAddParameter() { + result = new MultiplyConversion(); + + assertEquals(0, result.getParameters().length); + + result.addParameter(new Parameter("testKey", "testValue")); + + assertEquals(1, result.getParameters().length); + assertEquals("testKey", result.getParameters()[0].getName()); + assertEquals("testValue", result.getParameters()[0].getValue()); + } + +} diff --git a/sources/codemetropolis-toolchain-mapping/src/test/java/codemetropolis/toolchain/mapping/conversions/NormalizeConversionTest.java b/sources/codemetropolis-toolchain-mapping/src/test/java/codemetropolis/toolchain/mapping/conversions/NormalizeConversionTest.java new file mode 100644 index 00000000..7d198124 --- /dev/null +++ b/sources/codemetropolis-toolchain-mapping/src/test/java/codemetropolis/toolchain/mapping/conversions/NormalizeConversionTest.java @@ -0,0 +1,28 @@ +package codemetropolis.toolchain.mapping.conversions; + +import codemetropolis.toolchain.mapping.model.Limit; +import junit.framework.TestCase; + +public class NormalizeConversionTest extends TestCase { + + NormalizeConversion testObj; + + public void setup() { + testObj = null; + } + + public void testApply() { + testObj = new NormalizeConversion(); + + Limit l1 = new Limit(); + l1.add(42); + + Limit l2 = new Limit(); + l2.add(41); + l2.add(43); + + assertEquals(1.0, testObj.apply(24.0, l1)); + assertEquals(0.5, testObj.apply(42.0, l2)); + } + +} From 7a02c371cd805c3d248deb6a89efd991d2d56110 Mon Sep 17 00:00:00 2001 From: Hanziness Date: Fri, 20 Apr 2018 16:42:54 +0200 Subject: [PATCH 12/19] Unit tests added for Buildable, Point and Time classes in the commons toolchain element --- .../commons/cmxml/BuildableTest.java | 26 +++++++++++++++++++ .../toolchain/commons/cmxml/PointTest.java | 23 ++++++++++++++++ .../toolchain/commons/util/TimeTest.java | 24 +++++++++++++++++ 3 files changed, 73 insertions(+) create mode 100644 sources/codemetropolis-toolchain-commons/src/test/java/codemetropolis/toolchain/commons/cmxml/BuildableTest.java create mode 100644 sources/codemetropolis-toolchain-commons/src/test/java/codemetropolis/toolchain/commons/cmxml/PointTest.java create mode 100644 sources/codemetropolis-toolchain-commons/src/test/java/codemetropolis/toolchain/commons/util/TimeTest.java diff --git a/sources/codemetropolis-toolchain-commons/src/test/java/codemetropolis/toolchain/commons/cmxml/BuildableTest.java b/sources/codemetropolis-toolchain-commons/src/test/java/codemetropolis/toolchain/commons/cmxml/BuildableTest.java new file mode 100644 index 00000000..f8a33725 --- /dev/null +++ b/sources/codemetropolis-toolchain-commons/src/test/java/codemetropolis/toolchain/commons/cmxml/BuildableTest.java @@ -0,0 +1,26 @@ +package codemetropolis.toolchain.commons.cmxml; + +import codemetropolis.toolchain.commons.cmxml.Buildable.Type; +import junit.framework.TestCase; + +public class BuildableTest extends TestCase { + + Buildable b1, b2, b3; + + public void setup() { + b1 = null; + b2 = null; + b3 = null; + } + + public void testIsOverlapping() { + b1 = new Buildable("test1", "testBuilding1", Type.FLOOR, new Point(0, 0, 0), new Point(2, 2, 2)); + b2 = new Buildable("test2", "testBuilding2", Type.FLOOR, new Point(1, 1, 1), new Point(2, 2, 2)); + b3 = new Buildable("test3", "testBuilding3", Type.FLOOR, new Point(-1, -1, -1), new Point(2, 2, 2)); + + assertTrue(b1.isOverlapping(b2)); + assertTrue(b3.isOverlapping(b1)); + assertFalse(b2.isOverlapping(b3)); + } + +} diff --git a/sources/codemetropolis-toolchain-commons/src/test/java/codemetropolis/toolchain/commons/cmxml/PointTest.java b/sources/codemetropolis-toolchain-commons/src/test/java/codemetropolis/toolchain/commons/cmxml/PointTest.java new file mode 100644 index 00000000..c98c8a8a --- /dev/null +++ b/sources/codemetropolis-toolchain-commons/src/test/java/codemetropolis/toolchain/commons/cmxml/PointTest.java @@ -0,0 +1,23 @@ +package codemetropolis.toolchain.commons.cmxml; + +import junit.framework.TestCase; + +public class PointTest extends TestCase { + + Point testObj; + + public void setup() { + testObj = null; + } + + public void testTranslate() { + testObj = new Point(0, 0, 0); + + Point newPoint = testObj.translate(new Point(1, 2, 3)); + + assertEquals(1, newPoint.getX()); + assertEquals(2, newPoint.getY()); + assertEquals(3, newPoint.getZ()); + } + +} diff --git a/sources/codemetropolis-toolchain-commons/src/test/java/codemetropolis/toolchain/commons/util/TimeTest.java b/sources/codemetropolis-toolchain-commons/src/test/java/codemetropolis/toolchain/commons/util/TimeTest.java new file mode 100644 index 00000000..0d14040f --- /dev/null +++ b/sources/codemetropolis-toolchain-commons/src/test/java/codemetropolis/toolchain/commons/util/TimeTest.java @@ -0,0 +1,24 @@ +package codemetropolis.toolchain.commons.util; + +import junit.framework.TestCase; + +public class TimeTest extends TestCase { + + Time testObj; + + public void setup() { + testObj = null; + } + + public void testGetHours() { + testObj = new Time(0); + assertEquals(0, testObj.getHours()); + + testObj = new Time(3599999); // 0 hrs 59 mins 59 seconds, 999 milliseconds + assertEquals(0, testObj.getHours()); + + testObj = new Time(86400001); // 24 hrs 1 milliseconds + assertEquals(24, testObj.getHours()); + } + +} From ca04999b670baadbf724a053547e2b8d41f685e7 Mon Sep 17 00:00:00 2001 From: Hanziness Date: Fri, 20 Apr 2018 17:08:09 +0200 Subject: [PATCH 13/19] Added a monster-label attribute to mapping to be used as the signpost label --- .../sourcemeter_mapping_example_2_0_monsters.xml | 11 +++++++++++ .../toolchain/mapping/model/Linking.java | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/examples/mapping/sourcemeter_mapping_example_2_0_monsters.xml b/examples/mapping/sourcemeter_mapping_example_2_0_monsters.xml index c9a6d59e..3b2882c8 100644 --- a/examples/mapping/sourcemeter_mapping_example_2_0_monsters.xml +++ b/examples/mapping/sourcemeter_mapping_example_2_0_monsters.xml @@ -21,6 +21,17 @@ + + + + + + + + + + + diff --git a/sources/codemetropolis-toolchain-mapping/src/main/java/codemetropolis/toolchain/mapping/model/Linking.java b/sources/codemetropolis-toolchain-mapping/src/main/java/codemetropolis/toolchain/mapping/model/Linking.java index 54e1c552..a4b0ea5d 100644 --- a/sources/codemetropolis-toolchain-mapping/src/main/java/codemetropolis/toolchain/mapping/model/Linking.java +++ b/sources/codemetropolis-toolchain-mapping/src/main/java/codemetropolis/toolchain/mapping/model/Linking.java @@ -24,7 +24,7 @@ public class Linking { static { SUPPORTED_TARGETS.put(Type.FLOOR, new String[]{"width", "height", "length", "character", "external_character", "torches"}); SUPPORTED_TARGETS.put(Type.CELLAR, new String[]{"width", "height", "length", "character", "external_character", "torches"}); - SUPPORTED_TARGETS.put(Type.GARDEN, new String[]{"tree-ratio", "mushroom-ratio", "flower-ratio", "monster-count"}); // monster-ratio added by hand + SUPPORTED_TARGETS.put(Type.GARDEN, new String[]{"tree-ratio", "mushroom-ratio", "flower-ratio", "monster-count", "monster-label"}); SUPPORTED_TARGETS.put(Type.GROUND, new String[]{}); } From 88485256d8204e9e0003bd2e8d33bb7f1096adee Mon Sep 17 00:00:00 2001 From: gemar Date: Sat, 21 Apr 2018 00:50:00 +0200 Subject: [PATCH 14/19] Signpost added for the monster spawners --- .../rendering/model/building/Garden.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/sources/codemetropolis-toolchain-rendering/src/main/java/codemetropolis/toolchain/rendering/model/building/Garden.java b/sources/codemetropolis-toolchain-rendering/src/main/java/codemetropolis/toolchain/rendering/model/building/Garden.java index b06adb77..ca5f31c3 100644 --- a/sources/codemetropolis-toolchain-rendering/src/main/java/codemetropolis/toolchain/rendering/model/building/Garden.java +++ b/sources/codemetropolis-toolchain-rendering/src/main/java/codemetropolis/toolchain/rendering/model/building/Garden.java @@ -27,6 +27,7 @@ public Garden(Buildable innerBuildable) throws BuildingTypeMismatchException { prepareDoor(); prepareSigns(); prepareSpawners(); + prepareSignsForSpawners(); } private void prepareBase( ) { @@ -160,5 +161,24 @@ private void prepareSpawners( ) { if (monster_count > 2) primitives.add(new Spawner(position.getX() - 3, position.getY(), position.getZ() + size.getZ() / 2)); if (monster_count > 3) primitives.add(new Spawner(position.getX() + size.getX() + 2, position.getY(), position.getZ() + size.getZ() / 2)); } + + private void prepareSignsForSpawners() { + String signName = innerBuildable.hasAttribute("monster-label") ? (innerBuildable.getAttributeValue("monster-label")) : ""; + + switch (monster_count) { + case 4: + primitives.add(new SignPost(position.getX() + size.getX() + 2, position.getY(), position.getZ() + size.getZ() / 2 + 1, SignPost.Orientation.EAST, signName)); + primitives.add(new SignPost(position.getX() + size.getX() + 2, position.getY(), position.getZ() + size.getZ() / 2 - 1, SignPost.Orientation.EAST, signName)); + case 3: + primitives.add(new SignPost(position.getX() - 3, position.getY(), position.getZ() + size.getZ() / 2 + 1, SignPost.Orientation.WEST, signName)); + primitives.add(new SignPost(position.getX() - 3, position.getY(), position.getZ() + size.getZ() / 2 - 1, SignPost.Orientation.WEST, signName)); + case 2: + primitives.add(new SignPost(position.getX() + size.getX() / 2 - 1, position.getY(), position.getZ() + size.getZ() + 2, SignPost.Orientation.SOUTH, signName)); + primitives.add(new SignPost(position.getX() + size.getX() / 2 + 1, position.getY(), position.getZ() + size.getZ() + 2, SignPost.Orientation.SOUTH, signName)); + case 1: + primitives.add(new SignPost(position.getX() + size.getX() / 2 - 1, position.getY(), position.getZ() - 3, SignPost.Orientation.NORTH, signName)); + primitives.add(new SignPost(position.getX() + size.getX() / 2 + 1, position.getY(), position.getZ() - 3, SignPost.Orientation.NORTH, signName)); + } + } } From 6f991307c9ea168247b619f75926ca6ea9e193fc Mon Sep 17 00:00:00 2001 From: gemar Date: Sat, 21 Apr 2018 02:16:07 +0200 Subject: [PATCH 15/19] Unit tests added for Time class in the commons toolchain element, and for ConversionTest class in the mapping toolchain element --- .../toolchain/commons/util/TimeTest.java | 34 +++++++++++++ .../mapping/conversions/ConversionTest.java | 49 +++++++++++++++++++ 2 files changed, 83 insertions(+) diff --git a/sources/codemetropolis-toolchain-commons/src/test/java/codemetropolis/toolchain/commons/util/TimeTest.java b/sources/codemetropolis-toolchain-commons/src/test/java/codemetropolis/toolchain/commons/util/TimeTest.java index 0d14040f..1ab330aa 100644 --- a/sources/codemetropolis-toolchain-commons/src/test/java/codemetropolis/toolchain/commons/util/TimeTest.java +++ b/sources/codemetropolis-toolchain-commons/src/test/java/codemetropolis/toolchain/commons/util/TimeTest.java @@ -21,4 +21,38 @@ public void testGetHours() { assertEquals(24, testObj.getHours()); } + public void testGetMinutes() { + testObj = new Time(0); + assertEquals(0, testObj.getMinutes()); + + testObj = new Time(6999); + assertEquals(0, testObj.getMinutes()); + + testObj = new Time(59999); + assertEquals(0, testObj.getMinutes()); + + testObj = new Time(60000); + assertEquals(1, testObj.getMinutes()); + + testObj = new Time(3600000); + assertEquals(0, testObj.getMinutes()); + + testObj = new Time(3730000); + assertEquals(2, testObj.getMinutes()); + } + + public void testGetSeconds() { + testObj = new Time(0); + assertEquals(0, testObj.getSeconds()); + + testObj = new Time(3999); + assertEquals(3, testObj.getSeconds()); + + testObj = new Time(60000); + assertEquals(0, testObj.getSeconds()); + + testObj = new Time(74500); + assertEquals(14, testObj.getSeconds()); + } + } diff --git a/sources/codemetropolis-toolchain-mapping/src/test/java/codemetropolis/toolchain/mapping/conversions/ConversionTest.java b/sources/codemetropolis-toolchain-mapping/src/test/java/codemetropolis/toolchain/mapping/conversions/ConversionTest.java index 063063eb..75a0698e 100644 --- a/sources/codemetropolis-toolchain-mapping/src/test/java/codemetropolis/toolchain/mapping/conversions/ConversionTest.java +++ b/sources/codemetropolis-toolchain-mapping/src/test/java/codemetropolis/toolchain/mapping/conversions/ConversionTest.java @@ -41,6 +41,19 @@ public void testToDouble() { assertEquals(42.0, testResult); } + public void testToInt() { + int testResult; + + testResult = Conversion.toInt("13"); + assertEquals(13, testResult); + + testResult = Conversion.toInt("13.13"); + assertEquals(13, testResult); + + testResult = Conversion.toInt(4.9); + assertEquals(4, testResult); + } + public void testAddParameter() { result = new MultiplyConversion(); @@ -53,4 +66,40 @@ public void testAddParameter() { assertEquals("testValue", result.getParameters()[0].getValue()); } + public void testAddParameters() { + result = new MultiplyConversion(); + + assertEquals(0, result.getParameters().length); + + result.addParameters(new Parameter[] {new Parameter("testKey1", "testValue1")}); + assertEquals(1, result.getParameters().length); + assertEquals("testKey1", result.getParameters()[0].getName()); + assertEquals("testValue1", result.getParameters()[0].getValue()); + + result.addParameters(new Parameter[] {new Parameter("testKey2", "testValue2"), new Parameter("testKey3", "testValue3")}); + assertEquals(3, result.getParameters().length); + assertEquals("testKey1", result.getParameters()[0].getName()); + assertEquals("testValue1", result.getParameters()[0].getValue()); + assertEquals("testKey2", result.getParameters()[1].getName()); + assertEquals("testValue2", result.getParameters()[1].getValue()); + assertEquals("testKey3", result.getParameters()[2].getName()); + assertEquals("testValue3", result.getParameters()[2].getValue()); + } + + public void testClearParameters() { + result = new MultiplyConversion(); + + result.clearParameters(); + assertEquals(0, result.getParameters().length); + + result.addParameter(new Parameter("testKey", "testValue")); + result.clearParameters(); + assertEquals(0, result.getParameters().length); + + result.addParameter(new Parameter("testKey1", "testValue1")); + result.addParameter(new Parameter("testKey2", "testValue2")); + result.clearParameters(); + assertEquals(0, result.getParameters().length); + } + } From a045674fb430a02116fad13093ab54c1901e8497 Mon Sep 17 00:00:00 2001 From: gemar Date: Sat, 21 Apr 2018 03:36:38 +0200 Subject: [PATCH 16/19] Unit tests added for Layout class in the placing toolchain element, and for ProgressEventTest and CharacterTest classes in the rendering toolchain element --- .../toolchain/placing/layout/LayoutTest.java | 25 ++++++++ .../rendering/events/ProgressEventTest.java | 35 +++++++++++ .../rendering/util/CharacterTest.java | 61 +++++++++++++++++++ 3 files changed, 121 insertions(+) create mode 100644 sources/codemetropolis-toolchain-placing/src/test/java/codemetropolis/toolchain/placing/layout/LayoutTest.java create mode 100644 sources/codemetropolis-toolchain-rendering/src/test/java/codemetropolis/toolchain/rendering/events/ProgressEventTest.java create mode 100644 sources/codemetropolis-toolchain-rendering/src/test/java/codemetropolis/toolchain/rendering/util/CharacterTest.java diff --git a/sources/codemetropolis-toolchain-placing/src/test/java/codemetropolis/toolchain/placing/layout/LayoutTest.java b/sources/codemetropolis-toolchain-placing/src/test/java/codemetropolis/toolchain/placing/layout/LayoutTest.java new file mode 100644 index 00000000..aa71d14d --- /dev/null +++ b/sources/codemetropolis-toolchain-placing/src/test/java/codemetropolis/toolchain/placing/layout/LayoutTest.java @@ -0,0 +1,25 @@ +package codemetropolis.toolchain.placing.layout; + +import codemetropolis.toolchain.placing.exceptions.NonExistentLayoutException; +import codemetropolis.toolchain.placing.layout.pack.PackLayout; +import junit.framework.TestCase; + +public class LayoutTest extends TestCase { + + public void testParse() { + + try { + assert(Layout.parse("PACK") instanceof PackLayout); + } catch (NonExistentLayoutException e) { + fail(); + } + + try { + Layout.parse("WRONGTYPE"); + fail(); + } catch (NonExistentLayoutException e) {} + + + } + +} diff --git a/sources/codemetropolis-toolchain-rendering/src/test/java/codemetropolis/toolchain/rendering/events/ProgressEventTest.java b/sources/codemetropolis-toolchain-rendering/src/test/java/codemetropolis/toolchain/rendering/events/ProgressEventTest.java new file mode 100644 index 00000000..0d63fc44 --- /dev/null +++ b/sources/codemetropolis-toolchain-rendering/src/test/java/codemetropolis/toolchain/rendering/events/ProgressEventTest.java @@ -0,0 +1,35 @@ +package codemetropolis.toolchain.rendering.events; + +import junit.framework.TestCase; + +public class ProgressEventTest extends TestCase { + + ProgressEvent testObj; + + public void setup() { + testObj = null; + } + + public void testGetPercent() { + testObj = new ProgressEvent(new Object(), null, 100, 200, 100); + assertEquals(50.0, testObj.getPercent()); + + testObj = new ProgressEvent(new Object(), null, 53, 56, 400); + assertEquals(94.64, testObj.getPercent(), 0.01); + + testObj = new ProgressEvent(new Object(), null, 30, 30, 1000); + assertEquals(100.0, testObj.getPercent()); + } + + public void testGetTimeLeftInMillis() { + testObj = new ProgressEvent(new Object(), null, 100, 200, 100); + assertEquals(100, testObj.getTimeLeftInMillis()); + + testObj = new ProgressEvent(new Object(), null, 53, 56, 400); + assertEquals(22, testObj.getTimeLeftInMillis()); + + testObj = new ProgressEvent(new Object(), null, 30, 30, 1000); + assertEquals(0, testObj.getTimeLeftInMillis()); + } + +} diff --git a/sources/codemetropolis-toolchain-rendering/src/test/java/codemetropolis/toolchain/rendering/util/CharacterTest.java b/sources/codemetropolis-toolchain-rendering/src/test/java/codemetropolis/toolchain/rendering/util/CharacterTest.java new file mode 100644 index 00000000..278c6ee0 --- /dev/null +++ b/sources/codemetropolis-toolchain-rendering/src/test/java/codemetropolis/toolchain/rendering/util/CharacterTest.java @@ -0,0 +1,61 @@ +package codemetropolis.toolchain.rendering.util; + +import junit.framework.TestCase; + +public class CharacterTest extends TestCase { + + Character testObj; + + public void setup() { + testObj = null; + } + + public void testGetBlock() { + testObj = Character.STONE;assertEquals("minecraft:stone", testObj.getBlock().getName()); + testObj = Character.COBBLESTONE;assertEquals("minecraft:cobblestone", testObj.getBlock().getName()); + testObj = Character.MOSSY_STONE;assertEquals("minecraft:mossy_cobblestone", testObj.getBlock().getName()); + testObj = Character.SANDSTONE; assertEquals("minecraft:sandstone", testObj.getBlock().getName()); + testObj = Character.OBSIDIAN; assertEquals("minecraft:obsidian", testObj.getBlock().getName()); + testObj = Character.WOOD; assertEquals("minecraft:log", testObj.getBlock().getName()); + testObj = Character.DARK_WOOD; assertEquals("minecraft:log", testObj.getBlock().getName()); + testObj = Character.BIRCH_WOOD; assertEquals("minecraft:log", testObj.getBlock().getName()); + testObj = Character.PLANKS; assertEquals("minecraft:planks", testObj.getBlock().getName()); + testObj = Character.DARK_PLANKS; assertEquals("minecraft:planks", testObj.getBlock().getName()); + testObj = Character.METAL; assertEquals("minecraft:iron_block", testObj.getBlock().getName()); + testObj = Character.DIRT; assertEquals("minecraft:dirt", testObj.getBlock().getName()); + testObj = Character.SAND; assertEquals("minecraft:sandstone", testObj.getBlock().getName()); + testObj = Character.RED_SAND; assertEquals("minecraft:sand", testObj.getBlock().getName()); + testObj = Character.BRICK; assertEquals("minecraft:double_stone_slab", testObj.getBlock().getName()); + testObj = Character.STONE_BRICK; assertEquals("minecraft:double_stone_slab", testObj.getBlock().getName()); + testObj = Character.DARK_BRICK; assertEquals("minecraft:double_stone_slab", testObj.getBlock().getName()); + testObj = Character.GLASS; assertEquals("minecraft:glass", testObj.getBlock().getName()); + testObj = Character.GOLD; assertEquals("minecraft:gold_block", testObj.getBlock().getName()); + testObj = Character.DIAMOND; assertEquals("minecraft:diamond_block", testObj.getBlock().getName()); + testObj = Character.UNDEFINED; assertEquals("minecraft:wool", testObj.getBlock().getName()); + } + + public void testGetTopBlock() { + testObj = Character.WOOD; assertEquals("minecraft:fence", testObj.getTopBlock().getName()); + testObj = Character.DARK_WOOD; assertEquals("minecraft:fence", testObj.getTopBlock().getName()); + testObj = Character.BIRCH_WOOD; assertEquals("minecraft:fence", testObj.getTopBlock().getName()); + testObj = Character.PLANKS; assertEquals("minecraft:fence", testObj.getTopBlock().getName()); + testObj = Character.DARK_PLANKS; assertEquals("minecraft:fence", testObj.getTopBlock().getName()); + + testObj = Character.STONE;assertEquals(testObj.getBlock().getName(), testObj.getTopBlock().getName()); + testObj = Character.COBBLESTONE;assertEquals(testObj.getBlock().getName(), testObj.getTopBlock().getName()); + testObj = Character.MOSSY_STONE;assertEquals(testObj.getBlock().getName(), testObj.getTopBlock().getName()); + testObj = Character.SANDSTONE; assertEquals(testObj.getBlock().getName(), testObj.getTopBlock().getName()); + testObj = Character.OBSIDIAN; assertEquals(testObj.getBlock().getName(), testObj.getTopBlock().getName()); + testObj = Character.METAL; assertEquals(testObj.getBlock().getName(), testObj.getTopBlock().getName()); + testObj = Character.DIRT; assertEquals(testObj.getBlock().getName(), testObj.getTopBlock().getName()); + testObj = Character.SAND; assertEquals(testObj.getBlock().getName(), testObj.getTopBlock().getName()); + testObj = Character.RED_SAND; assertEquals(testObj.getBlock().getName(), testObj.getTopBlock().getName()); + testObj = Character.BRICK; assertEquals(testObj.getBlock().getName(), testObj.getTopBlock().getName()); + testObj = Character.STONE_BRICK; assertEquals(testObj.getBlock().getName(), testObj.getTopBlock().getName()); + testObj = Character.DARK_BRICK; assertEquals(testObj.getBlock().getName(), testObj.getTopBlock().getName()); + testObj = Character.GLASS; assertEquals(testObj.getBlock().getName(), testObj.getTopBlock().getName()); + testObj = Character.GOLD; assertEquals(testObj.getBlock().getName(), testObj.getTopBlock().getName()); + } + + +} From 3a759f02e3f60ec6087b848c6e2ce832983e3a27 Mon Sep 17 00:00:00 2001 From: bkarola <20167233+bkarola@users.noreply.github.com> Date: Sat, 21 Apr 2018 11:16:16 +0200 Subject: [PATCH 17/19] Unit tests for mapping and rendering --- .../mapping/control/LimitControllerTest.java | 23 ++++++++++++++++++ .../conversions/ToDoubleConversionTest.java | 21 ++++++++++++++++ .../conversions/ToIntConversionTest.java | 21 ++++++++++++++++ .../toolchain/mapping/model/LimitTest.java | 22 +++++++++++++++++ .../rendering/model/primitive/BoxelTest.java | 24 +++++++++++++++++++ 5 files changed, 111 insertions(+) create mode 100644 sources/codemetropolis-toolchain-mapping/src/test/java/codemetropolis/toolchain/mapping/control/LimitControllerTest.java create mode 100644 sources/codemetropolis-toolchain-mapping/src/test/java/codemetropolis/toolchain/mapping/conversions/ToDoubleConversionTest.java create mode 100644 sources/codemetropolis-toolchain-mapping/src/test/java/codemetropolis/toolchain/mapping/conversions/ToIntConversionTest.java create mode 100644 sources/codemetropolis-toolchain-mapping/src/test/java/codemetropolis/toolchain/mapping/model/LimitTest.java create mode 100644 sources/codemetropolis-toolchain-rendering/src/test/java/codemetropolis/toolchain/rendering/model/primitive/BoxelTest.java diff --git a/sources/codemetropolis-toolchain-mapping/src/test/java/codemetropolis/toolchain/mapping/control/LimitControllerTest.java b/sources/codemetropolis-toolchain-mapping/src/test/java/codemetropolis/toolchain/mapping/control/LimitControllerTest.java new file mode 100644 index 00000000..c13c54a1 --- /dev/null +++ b/sources/codemetropolis-toolchain-mapping/src/test/java/codemetropolis/toolchain/mapping/control/LimitControllerTest.java @@ -0,0 +1,23 @@ +package codemetropolis.toolchain.mapping.control; + +import codemetropolis.toolchain.mapping.model.Limit; +import junit.framework.TestCase; + +public class LimitControllerTest extends TestCase { + + LimitController testObj; + + public void setup() { + testObj = null; + } + + public void testAdd() { + testObj = new LimitController(); + + testObj.add("name", "from", 2.0); + + assertNotNull(testObj.getLimit("name", "from")); + assertEquals(1, testObj.getLimit("name", "from").getValueSetSize()); + } + +} \ No newline at end of file diff --git a/sources/codemetropolis-toolchain-mapping/src/test/java/codemetropolis/toolchain/mapping/conversions/ToDoubleConversionTest.java b/sources/codemetropolis-toolchain-mapping/src/test/java/codemetropolis/toolchain/mapping/conversions/ToDoubleConversionTest.java new file mode 100644 index 00000000..46d8fb89 --- /dev/null +++ b/sources/codemetropolis-toolchain-mapping/src/test/java/codemetropolis/toolchain/mapping/conversions/ToDoubleConversionTest.java @@ -0,0 +1,21 @@ +package codemetropolis.toolchain.mapping.conversions; + +import codemetropolis.toolchain.mapping.model.Limit; +import junit.framework.TestCase; + +public class ToDoubleConversionTest extends TestCase { + + ToDoubleConversion testObj; + + public void setup() { + testObj = null; + } + + public void testApply() { + testObj = new ToDoubleConversion(); + + assertEquals(2.0, testObj.apply(2.0, new Limit())); + assertEquals(2.0, testObj.apply("2.0", new Limit())); + } + +} \ No newline at end of file diff --git a/sources/codemetropolis-toolchain-mapping/src/test/java/codemetropolis/toolchain/mapping/conversions/ToIntConversionTest.java b/sources/codemetropolis-toolchain-mapping/src/test/java/codemetropolis/toolchain/mapping/conversions/ToIntConversionTest.java new file mode 100644 index 00000000..f8599cb8 --- /dev/null +++ b/sources/codemetropolis-toolchain-mapping/src/test/java/codemetropolis/toolchain/mapping/conversions/ToIntConversionTest.java @@ -0,0 +1,21 @@ +package codemetropolis.toolchain.mapping.conversions; + +import codemetropolis.toolchain.mapping.model.Limit; +import junit.framework.TestCase; + +public class ToIntConversionTest extends TestCase { + + ToIntConversion testObj; + + public void setup() { + testObj = null; + } + + public void testApply() { + testObj = new ToIntConversion(); + + assertEquals(3, testObj.apply(3.21, new Limit())); + assertEquals(4, testObj.apply("4", new Limit())); + } + +} \ No newline at end of file diff --git a/sources/codemetropolis-toolchain-mapping/src/test/java/codemetropolis/toolchain/mapping/model/LimitTest.java b/sources/codemetropolis-toolchain-mapping/src/test/java/codemetropolis/toolchain/mapping/model/LimitTest.java new file mode 100644 index 00000000..eddea6a6 --- /dev/null +++ b/sources/codemetropolis-toolchain-mapping/src/test/java/codemetropolis/toolchain/mapping/model/LimitTest.java @@ -0,0 +1,22 @@ +package codemetropolis.toolchain.mapping.model; + +import junit.framework.TestCase; + +public class LimitTest extends TestCase { + + Limit testObj; + + public void setup() { + testObj = null; + } + + public void testAdd() { + testObj = new Limit(); + + testObj.add(3.0); + assertEquals(1, testObj.getValueSetSize()); + assertEquals(3.0, testObj.getMax()); + assertEquals(3.0, testObj.getMin()); + } + +} \ No newline at end of file diff --git a/sources/codemetropolis-toolchain-rendering/src/test/java/codemetropolis/toolchain/rendering/model/primitive/BoxelTest.java b/sources/codemetropolis-toolchain-rendering/src/test/java/codemetropolis/toolchain/rendering/model/primitive/BoxelTest.java new file mode 100644 index 00000000..3605c139 --- /dev/null +++ b/sources/codemetropolis-toolchain-rendering/src/test/java/codemetropolis/toolchain/rendering/model/primitive/BoxelTest.java @@ -0,0 +1,24 @@ +package codemetropolis.toolchain.rendering.model.primitive; + +import codemetropolis.toolchain.commons.cmxml.Point; +import codemetropolis.toolchain.rendering.model.BasicBlock; +import junit.framework.TestCase; + +public class BoxelTest extends TestCase { + + Boxel testObj; + + public void setup() { + testObj = null; + } + + public void testToCSV() { + + testObj = new Boxel(new BasicBlock((short) 10, 3), new Point(2,5,6), "info"); + assertEquals("10;3;2;5;6;info", testObj.toCSV()); + + testObj = new Boxel(new BasicBlock((short) 11, 3), new Point(2,5,6), ""); + assertEquals("11;3;2;5;6;NULL", testObj.toCSV()); + } + +} \ No newline at end of file From 0c3c6bea1871445811c411b5f67640f5726dcc2b Mon Sep 17 00:00:00 2001 From: bkarola <20167233+bkarola@users.noreply.github.com> Date: Sat, 21 Apr 2018 11:41:02 +0200 Subject: [PATCH 18/19] Unit tests for SonarMetric class --- .../converter/sonarqube/SonarMetricTest.java | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 sources/codemetropolis-toolchain-converter/src/test/java/codemetropolis/toolchain/converter/sonarqube/SonarMetricTest.java diff --git a/sources/codemetropolis-toolchain-converter/src/test/java/codemetropolis/toolchain/converter/sonarqube/SonarMetricTest.java b/sources/codemetropolis-toolchain-converter/src/test/java/codemetropolis/toolchain/converter/sonarqube/SonarMetricTest.java new file mode 100644 index 00000000..d5577516 --- /dev/null +++ b/sources/codemetropolis-toolchain-converter/src/test/java/codemetropolis/toolchain/converter/sonarqube/SonarMetricTest.java @@ -0,0 +1,35 @@ +package codemetropolis.toolchain.converter.sonarqube; + +import codemetropolis.toolchain.converter.sonarqube.SonarMetric.MetricType; +import junit.framework.TestCase; + +public class SonarMetricTest extends TestCase { + + SonarMetric testObj; + + + public void setup() { + testObj = null; + } + + public void testHashCode() { + + testObj = new SonarMetric(null, null, null); + assertEquals(29791, testObj.hashCode()); + + testObj = new SonarMetric("name1", "value1", null); + int value = ((31+"name1".hashCode())*31)*31+"value1".hashCode(); + assertEquals(value, testObj.hashCode()); + } + + public void testEquals() { + testObj = new SonarMetric("name1", "value1", MetricType.STRING); + + assertEquals(true, testObj.equals(testObj)); + assertEquals(true, testObj.equals(new SonarMetric("name1", "value1", MetricType.STRING))); + assertEquals(false, testObj.equals(null)); + assertEquals(false, testObj.equals(3)); + assertEquals(false, testObj.equals(new SonarMetric(null, null, null))); + assertEquals(false, testObj.equals(new SonarMetric("name1", "value1", null))); + } +} From f3cce329c8e8daa89934fa6b858f23c7606edc1e Mon Sep 17 00:00:00 2001 From: bkarola <20167233+bkarola@users.noreply.github.com> Date: Sat, 21 Apr 2018 12:20:55 +0200 Subject: [PATCH 19/19] Unit tests for MappingController and PackLayout --- .../mapping/control/LimitControllerTest.java | 1 - .../control/MappingControllerTest.java | 69 +++++++++++++++++ .../placing/layout/pack/PackLayoutTest.java | 76 +++++++++++++++++++ 3 files changed, 145 insertions(+), 1 deletion(-) create mode 100644 sources/codemetropolis-toolchain-mapping/src/test/java/codemetropolis/toolchain/mapping/control/MappingControllerTest.java create mode 100644 sources/codemetropolis-toolchain-placing/src/test/java/codemetropolis/toolchain/placing/layout/pack/PackLayoutTest.java diff --git a/sources/codemetropolis-toolchain-mapping/src/test/java/codemetropolis/toolchain/mapping/control/LimitControllerTest.java b/sources/codemetropolis-toolchain-mapping/src/test/java/codemetropolis/toolchain/mapping/control/LimitControllerTest.java index c13c54a1..ac6564f1 100644 --- a/sources/codemetropolis-toolchain-mapping/src/test/java/codemetropolis/toolchain/mapping/control/LimitControllerTest.java +++ b/sources/codemetropolis-toolchain-mapping/src/test/java/codemetropolis/toolchain/mapping/control/LimitControllerTest.java @@ -1,6 +1,5 @@ package codemetropolis.toolchain.mapping.control; -import codemetropolis.toolchain.mapping.model.Limit; import junit.framework.TestCase; public class LimitControllerTest extends TestCase { diff --git a/sources/codemetropolis-toolchain-mapping/src/test/java/codemetropolis/toolchain/mapping/control/MappingControllerTest.java b/sources/codemetropolis-toolchain-mapping/src/test/java/codemetropolis/toolchain/mapping/control/MappingControllerTest.java new file mode 100644 index 00000000..fd8f49b6 --- /dev/null +++ b/sources/codemetropolis-toolchain-mapping/src/test/java/codemetropolis/toolchain/mapping/control/MappingControllerTest.java @@ -0,0 +1,69 @@ +package codemetropolis.toolchain.mapping.control; + +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.Collection; + +import codemetropolis.toolchain.commons.cmxml.Buildable; +import codemetropolis.toolchain.commons.cmxml.Buildable.Type; +import codemetropolis.toolchain.mapping.model.Mapping; +import junit.framework.TestCase; + +public class MappingControllerTest extends TestCase { + + MappingController testObj; + + public void setup() { + testObj = null; + } + + public void testSetProperty() { + + testObj = new MappingController(new Mapping()); + + Buildable b = new Buildable("id", "name", Type.GARDEN); + b.setSizeX(0); + b.setSizeY(0); + + try { + Method method = testObj.getClass().getDeclaredMethod("setProperty", Buildable.class, String.class, Object.class, boolean.class); + method.setAccessible(true); + + method.invoke(testObj, b, "width", 3.0, false); + + assertEquals(3, b.getSizeX()); + + method.invoke(testObj, b, "height", 5.0, false); + + assertEquals(5, b.getSizeY()); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public void testFindRoot() { + + testObj = new MappingController(new Mapping()); + + Collection buildables = new ArrayList<>(); + + Buildable b = new Buildable("id", "name", Type.GARDEN); + + buildables.add(b); + + try { + Method method = testObj.getClass().getDeclaredMethod("findRoot", Collection.class); + method.setAccessible(true); + + if (b.isRoot()) { + assertEquals(b, method.invoke(testObj, buildables)); + } else { + assertNull(method.invoke(testObj, buildables)); + } + } catch (Exception e) { + e.printStackTrace(); + } + + } + +} \ No newline at end of file diff --git a/sources/codemetropolis-toolchain-placing/src/test/java/codemetropolis/toolchain/placing/layout/pack/PackLayoutTest.java b/sources/codemetropolis-toolchain-placing/src/test/java/codemetropolis/toolchain/placing/layout/pack/PackLayoutTest.java new file mode 100644 index 00000000..98349c8a --- /dev/null +++ b/sources/codemetropolis-toolchain-placing/src/test/java/codemetropolis/toolchain/placing/layout/pack/PackLayoutTest.java @@ -0,0 +1,76 @@ +package codemetropolis.toolchain.placing.layout.pack; + +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.Collection; + +import codemetropolis.toolchain.commons.cmxml.Buildable; +import codemetropolis.toolchain.commons.cmxml.Buildable.Type; +import codemetropolis.toolchain.commons.cmxml.Point; +import junit.framework.TestCase; + +public class PackLayoutTest extends TestCase { + + PackLayout testObj; + + public void setup() { + testObj = null; + } + + public void testGetMaxSizes() { + + testObj = new PackLayout(); + + Buildable b = new Buildable("id", "name", Type.FLOOR, new Point(), new Point(10,10,10)); + BuildableWrapper w = new BuildableWrapper(b); + + Collection list = new ArrayList<>(); + + try { + Method method = testObj.getClass().getDeclaredMethod("getMaxSizes", Collection.class); + method.setAccessible(true); + + Point result = (Point) method.invoke(testObj, list); + assertEquals(0, result.getX()); + assertEquals(0, result.getY()); + assertEquals(0, result.getZ()); + + list.add(w); + result = (Point) method.invoke(testObj, list); + + assertEquals(10, result.getX()); + assertEquals(0, result.getY()); + assertEquals(10, result.getZ()); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public void testCalculateParentSize() { + + testObj = new PackLayout(); + + Buildable b = new Buildable("id", "name", Type.FLOOR, new Point(1,1,1), new Point(10,5,2)); + BuildableWrapper w = new BuildableWrapper(b); + + Collection list = new ArrayList<>(); + list.add(w); + + //space: 2 + //minX: 1, maxX: 1+10, minZ: 1, maxZ: 1+2 + //return: x: 11-1+4, z: 3-1+4 + try { + Method method = testObj.getClass().getDeclaredMethod("calculateParentSize", Collection.class, int.class); + method.setAccessible(true); + + Point result = (Point) method.invoke(testObj, list, 2); + assertEquals(14, result.getX()); + assertEquals(0, result.getY()); + assertEquals(6, result.getZ()); + } catch(Exception e) { + e.printStackTrace(); + } + + } + +}