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..3b2882c8 --- /dev/null +++ b/examples/mapping/sourcemeter_mapping_example_2_0_monsters.xml @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file 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..1ab330aa --- /dev/null +++ b/sources/codemetropolis-toolchain-commons/src/test/java/codemetropolis/toolchain/commons/util/TimeTest.java @@ -0,0 +1,58 @@ +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()); + } + + 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-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..561d0a7f --- /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 testObj; + + public void setup () { + testObj = null; + } + + public void testConverterExecutorArgsConstructorNoParams() { + testObj = new ConverterExecutorArgs(ConverterType.SOURCEMETER, "testSource", "testOutput"); + assertEquals("testOutput", testObj.getOutputFile()); + assertEquals("testSource", testObj.getSource()); + assertEquals(ConverterType.SOURCEMETER, testObj.getType()); + } + + public void testConverterExecutorArgsConstructor() { + 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-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); + } +} 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))); + } +} 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..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"}); + SUPPORTED_TARGETS.put(Type.GARDEN, new String[]{"tree-ratio", "mushroom-ratio", "flower-ratio", "monster-count", "monster-label"}); SUPPORTED_TARGETS.put(Type.GROUND, new String[]{}); } 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..31b3df13 --- /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 testObj; + + public void setup() { + testObj = null; + } + + public void testMappingExecutorArgs() { + 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()); + } + +} 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..ac6564f1 --- /dev/null +++ b/sources/codemetropolis-toolchain-mapping/src/test/java/codemetropolis/toolchain/mapping/control/LimitControllerTest.java @@ -0,0 +1,22 @@ +package codemetropolis.toolchain.mapping.control; + +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/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-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..75a0698e --- /dev/null +++ b/sources/codemetropolis-toolchain-mapping/src/test/java/codemetropolis/toolchain/mapping/conversions/ConversionTest.java @@ -0,0 +1,105 @@ +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 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(); + + 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()); + } + + 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); + } + +} 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)); + } + +} 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-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-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(); + } + + } + +} 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..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 @@ -9,10 +9,13 @@ 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; public class Garden extends Building { + + int monster_count; public Garden(Buildable innerBuildable) throws BuildingTypeMismatchException { super(innerBuildable); @@ -23,11 +26,18 @@ public Garden(Buildable innerBuildable) throws BuildingTypeMismatchException { prepareBase(); prepareDoor(); prepareSigns(); + prepareSpawners(); + prepareSignsForSpawners(); } 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" ) } } } ) ); @@ -144,5 +154,31 @@ 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( ) { + 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)); + } + + 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)); + } + } } 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; + } + +} 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/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 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()); + } + + +}