r3356 - in isis-fish/branches/3.3.1/src: main/java/fr/ifremer/isisfish/mexico/xml main/java/fr/ifremer/isisfish/simulator/sensitivity/domain test/java/fr/ifremer/isisfish/mexico test/java/fr/ifremer/isisfish/simulator/launcher test/java/fr/ifremer/isisfish/simulator/sensitivity test/java/fr/ifremer/isisfish/ui/sensitivity
Author: jcouteau Date: 2011-06-07 16:44:33 +0000 (Tue, 07 Jun 2011) New Revision: 3356 Log: Fix almost all tests, still one test fail on matrix equality Modified: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/mexico/xml/DomXMLParser.java isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/ContinuousDomain.java isis-fish/branches/3.3.1/src/test/java/fr/ifremer/isisfish/mexico/MexicoHelperTest.java isis-fish/branches/3.3.1/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTest.java isis-fish/branches/3.3.1/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/FactorTest.java isis-fish/branches/3.3.1/src/test/java/fr/ifremer/isisfish/ui/sensitivity/FactorTreeModelTest.java Modified: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/mexico/xml/DomXMLParser.java =================================================================== --- isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/mexico/xml/DomXMLParser.java 2011-06-07 14:08:23 UTC (rev 3355) +++ isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/mexico/xml/DomXMLParser.java 2011-06-07 16:44:33 UTC (rev 3356) @@ -166,6 +166,7 @@ Element matrixElement = fixedElement.element(MX); MatrixND matrix = MexicoHelper.getMatrixFromXml(matrixElement, topiaContext); mdomain.setReferenceValue(matrix); + mdomain.setPercentageType(true); domain = mdomain; } @@ -178,6 +179,7 @@ Element equationElement = fixedElement.element(EQUATION); edomain.setReferenceValue(Double.valueOf(equationElement.attributeValue(REFERENCE))); edomain.setVariableName(equationElement.attributeValue(VARIABLE)); + edomain.setPercentageType(true); domain = edomain; } @@ -189,6 +191,7 @@ if (percentageElement != null) { domain.setCoefficient(Double.valueOf(percentageElement.attributeValue(COEFFICIENT))); domain.setReferenceValue(Double.valueOf(percentageElement.attributeValue(REFERENCE))); + domain.setPercentageType(true); } else { // <range max="1.0" min="0.0"/> @@ -232,6 +235,7 @@ Element matrixElement = fixedElement.element(MX); MatrixND matrix = MexicoHelper.getMatrixFromXml(matrixElement, topiaContext); mdomain.setReferenceValue(matrix); + mdomain.setPercentageType(true); domain = mdomain; } @@ -246,6 +250,7 @@ Element equationElement = fixedElement.element(EQUATION); edomain.setReferenceValue(Double.valueOf(equationElement.attributeValue(REFERENCE))); edomain.setVariableName(equationElement.attributeValue(VARIABLE)); + edomain.setPercentageType(true); domain = edomain; } @@ -257,6 +262,7 @@ if (percentageElement != null) { domain.setCoefficient(Double.valueOf(percentageElement.attributeValue(COEFFICIENT))); domain.setReferenceValue(Double.valueOf(percentageElement.attributeValue(REFERENCE))); + domain.setPercentageType(true); } else { // <range max="1" min="3"/> @@ -358,6 +364,7 @@ Element matrixElement = referenceElement.element(MX); MatrixND matrix = MexicoHelper.getMatrixFromXml(matrixElement, topiaContext); mdomain.setReferenceValue(matrix); + mdomain.setPercentageType(true); } else { Element rangeElement = fixedElement.element(RANGE); @@ -379,6 +386,7 @@ if (referenceElement != null) { edomain.setCoefficient(Double.valueOf(referenceElement.attributeValue(COEFFICIENT))); edomain.setReferenceValue(Double.valueOf(referenceElement.getTextTrim())); + edomain.setPercentageType(true); } else { Element rangeElement = fixedElement.element(RANGE); @@ -398,6 +406,7 @@ if (referenceElement != null) { domain.setCoefficient(Double.valueOf(referenceElement.attributeValue(COEFFICIENT))); domain.setReferenceValue(Double.valueOf(referenceElement.getTextTrim())); + domain.setPercentageType(true); } else { // <range max="1.0" min="0.0"/> @@ -430,7 +439,7 @@ factor.setPath(path); Element fixedElement = factorElement.element(DOMAIN).element(FIXED); if (CONTINUOUS.equals(property)) { - ContinuousDomain domain = null; + ContinuousDomain domain; if(property.equals(MATRIXCONTINUOUS)) { @@ -444,6 +453,7 @@ Element matrixElement = referenceElement.element(MX); MatrixND matrix = MexicoHelper.getMatrixFromXml(matrixElement, topiaContext); mdomain.setReferenceValue(matrix); + mdomain.setPercentageType(true); } else { Element rangeElement = fixedElement.element(RANGE); @@ -465,6 +475,7 @@ if (referenceElement != null) { edomain.setCoefficient(Double.valueOf(referenceElement.attributeValue(COEFFICIENT))); edomain.setReferenceValue(Double.valueOf(referenceElement.getTextTrim())); + edomain.setPercentageType(true); } else { Element rangeElement = fixedElement.element(RANGE); @@ -484,6 +495,7 @@ if (referenceElement != null) { domain.setCoefficient(Double.valueOf(referenceElement.attributeValue(COEFFICIENT))); domain.setReferenceValue(Double.valueOf(referenceElement.getTextTrim())); + domain.setPercentageType(true); } else { // <range max="1.0" min="0.0"/> Modified: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/ContinuousDomain.java =================================================================== --- isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/ContinuousDomain.java 2011-06-07 14:08:23 UTC (rev 3355) +++ isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/ContinuousDomain.java 2011-06-07 16:44:33 UTC (rev 3356) @@ -110,15 +110,9 @@ */ public Object getMinBound() { if (isPercentageType()) { - MatrixND temp = ((MatrixND) getReferenceValue()).copy(); - // since 3.4.0.0, operator is always * - temp.map(new MapFunction() { - public double apply(double val) { - return (val + ((val * coefficient) * ((2 * getCalculatorMinBound() - 1)))); - } - }); - return temp; + return ((Double)referenceValue + (((Double)referenceValue * coefficient) * ((2 * getCalculatorMinBound() - 1)))); + } else { return minBound; } @@ -150,16 +144,9 @@ */ public Object getMaxBound() { if (isPercentageType()) { - MatrixND temp = ((MatrixND) getReferenceValue()).copy(); - - // since 3.4.0.0, operator is always * - temp.map(new MapFunction() { - public double apply(double val) { - return (val + ((val * coefficient) * - ((2 * getCalculatorMaxBound() - 1)))); - } - }); - return temp; + return ((Double) referenceValue + + (((Double) referenceValue * coefficient) + * ((2 * getCalculatorMaxBound() - 1)))); } else { return maxBound; } @@ -224,9 +211,17 @@ * {@inheritDoc}. */ public Object getValueForIdentifier(Object identifier) { + + Double result; + + if (isPercentageType()) { // since 3.4.0.0, operator is always * - Double result = ((Double)referenceValue + (((Double)referenceValue * coefficient) + result = ((Double)referenceValue + (((Double)referenceValue * coefficient) * ((2 * (Double)identifier - 1)))); + } else { + result = ((Double)identifier * ((Double)maxBound - (Double)minBound)) + + (Double)minBound; + } return result; } Modified: isis-fish/branches/3.3.1/src/test/java/fr/ifremer/isisfish/mexico/MexicoHelperTest.java =================================================================== --- isis-fish/branches/3.3.1/src/test/java/fr/ifremer/isisfish/mexico/MexicoHelperTest.java 2011-06-07 14:08:23 UTC (rev 3355) +++ isis-fish/branches/3.3.1/src/test/java/fr/ifremer/isisfish/mexico/MexicoHelperTest.java 2011-06-07 16:44:33 UTC (rev 3356) @@ -149,6 +149,7 @@ MatrixContinuousDomain domain4 = new MatrixContinuousDomain(); domain4.setCoefficient(0.799); domain4.setReferenceValue(matrix1); + domain4.setPercentageType(true); factorMatrixContinuous.setDomain(domain4); factorMatrixContinuous.setPath("fr.ifremer.isisfish.entities.PopulationGroup#1156461521076#0.6526656643346673#minLength"); @@ -158,6 +159,7 @@ domain5.setCoefficient(0.1); domain5.setReferenceValue(45.0); domain5.setVariableName("L1"); + domain5.setPercentageType(true); factorEquationContinuous.setDomain(domain5); factorEquationContinuous.setPath("fr.ifremer.isisfish.entities.PopulationGroup#1156461521076#0.6526656643346673#maxLength"); Modified: isis-fish/branches/3.3.1/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTest.java =================================================================== --- isis-fish/branches/3.3.1/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTest.java 2011-06-07 14:08:23 UTC (rev 3355) +++ isis-fish/branches/3.3.1/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTest.java 2011-06-07 16:44:33 UTC (rev 3356) @@ -231,18 +231,18 @@ * @throws TopiaException */ @Test - public void testFactorPreScriptFactorInt() throws StorageException, TopiaException { + public void testFactorPreScriptFactor() throws StorageException, TopiaException { // factor - Factor factor = new Factor("testint"); + Factor factor = new Factor("test"); ContinuousDomain domain = new ContinuousDomain(); domain.setMinBound(0.0); domain.setMaxBound(50.0); factor.setDomain(domain); factor.setPath("fr.ifremer.entities.Cell#1234567890#length"); - factor.setValueForIdentifier(49); + factor.setValueForIdentifier(0.5); - Assert.assertEquals((Integer)49, factor.getValue()); + Assert.assertEquals(25.0, factor.getValue()); // scenario Scenario scenario = new Scenario(); @@ -252,7 +252,7 @@ SimulationService service = SimulationService.getService(); String scriptContent = service.generatePreScript(scenario); - Assert.assertTrue(scriptContent.contains("java.lang.Integer")); + Assert.assertTrue(scriptContent.contains("java.lang.Double")); Assert.assertTrue(scriptContent.contains("db.findByTopiaId(\"fr.ifremer.entities.Cell#1234567890\")")); Assert.assertTrue(scriptContent.contains("BeanUtils.setProperty(entity0, \"length\"")); } @@ -333,6 +333,7 @@ domain1.setReferenceValue(10.0); domain1.setCoefficient(0.1); domain1.setVariableName("K1"); + domain1.setPercentageType(true); factorEquation.setDomain(domain1); factorEquation.setPath("fr.ifremer.equation1#testFactorPreScriptEquation"); factorEquation.setValueForIdentifier(0.4); Modified: isis-fish/branches/3.3.1/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/FactorTest.java =================================================================== --- isis-fish/branches/3.3.1/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/FactorTest.java 2011-06-07 14:08:23 UTC (rev 3355) +++ isis-fish/branches/3.3.1/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/FactorTest.java 2011-06-07 16:44:33 UTC (rev 3356) @@ -68,9 +68,9 @@ domain.setMaxBound(50.0); factor.setDomain(domain); factor.setPath("org.nuiton.factor#1234567890#0.12242345354#name"); - factor.setValueForIdentifier(49); + factor.setValueForIdentifier(0.5); - Assert.assertEquals(49, factor.getValue()); + Assert.assertEquals(25.0, factor.getValue()); if (log.isInfoEnabled()) { log.info("factor#toString() = " + factor); @@ -148,6 +148,26 @@ matrix1.setValue(new int[] { 2, 0 }, 3); matrix1.setValue(new int[] { 2, 1 }, -1); + // matrix minBound + MatrixND minBound = MatrixFactory.getInstance().create("test1", + new int[]{3, 2}, new String[]{"col1", "col2"}); + minBound.setValue(new int[]{0, 0}, 0.9); + minBound.setValue(new int[]{0, 1}, -15.4); + minBound.setValue(new int[]{1, 0}, 18.9); + minBound.setValue(new int[]{1, 1}, 1.8); + minBound.setValue(new int[]{2, 0}, 2.7); + minBound.setValue(new int[]{2, 1}, -1.1); + + // matrix maxBound + MatrixND maxBound = MatrixFactory.getInstance().create("test1", + new int[]{3, 2}, new String[]{"col1", "col2"}); + maxBound.setValue(new int[]{0, 0}, 1.1); + maxBound.setValue(new int[]{0, 1}, -12.6); + maxBound.setValue(new int[]{1, 0}, 23.1); + maxBound.setValue(new int[]{1, 1}, 2.2); + maxBound.setValue(new int[]{2, 0}, 3.3); + maxBound.setValue(new int[]{2, 1}, -0.9); + // factor Factor factor = new Factor("testmatrix"); MatrixContinuousDomain domain = new MatrixContinuousDomain (); @@ -159,8 +179,8 @@ Assert.assertEquals(0.92, ((MatrixND)factor.getValue()).getValue(new int[] { 0, 0 }),0.0000001); Assert.assertEquals(2.76, ((MatrixND)factor.getValue()).getValue(new int[] { 2, 0 }),0.0000001); - Assert.assertEquals(0,(Double)((ContinuousDomain)factor.getDomain()).getMinBound(),0); - Assert.assertEquals(1,(Double)((ContinuousDomain)factor.getDomain()).getMaxBound(),0); + Assert.assertTrue(minBound.equalsValues((MatrixND)((ContinuousDomain)factor.getDomain()).getMinBound())); + Assert.assertTrue(maxBound.equalsValues((MatrixND)((ContinuousDomain)factor.getDomain()).getMaxBound())); Assert.assertEquals(0.1, (Double)factor.getDisplayedValue(),0); // matrix 2 @@ -254,14 +274,14 @@ domain.setCoefficient(0.1); domain.setVariableName("Linf"); domain.setReferenceValue(3.0); + domain.setPercentageType(true); factor.setDomain(domain); factor.setPath("org.nuiton.math.matrix.MatrixND#563456293453#2.456347646#dim"); factor.setValueForIdentifier(0.1); Assert.assertEquals(2.76, (Double)factor.getValue(),0.0000001); - Assert.assertEquals(0,(Double)((ContinuousDomain)factor.getDomain()).getMinBound(),0); - Assert.assertEquals(1,(Double)((ContinuousDomain)factor.getDomain()).getMaxBound(),0); - Assert.assertEquals(0.1, (Double)factor.getValue(),0); + Assert.assertEquals(2.7,(Double)((ContinuousDomain)factor.getDomain()).getMinBound(),0); + Assert.assertEquals(3.3,(Double)((ContinuousDomain)factor.getDomain()).getMaxBound(),0); // factor 2 Factor factor2 = new Factor("testequation"); @@ -269,13 +289,14 @@ domain2.setCoefficient(0.1); domain2.setVariableName("Linf"); domain2.setReferenceValue(3.0); + domain2.setPercentageType(true); factor2.setDomain(domain2); factor2.setPath("org.nuiton.math.matrix.MatrixND#563456293453#2.456347646#dim"); factor2.setValueForIdentifier(0.1); Assert.assertEquals(2.76, (Double)factor2.getValue(),0.0000001); - Assert.assertEquals(0,(Double)((ContinuousDomain)factor.getDomain()).getMinBound(),0); - Assert.assertEquals(1,(Double)((ContinuousDomain)factor.getDomain()).getMaxBound(),0); + Assert.assertEquals(2.7,(Double)((ContinuousDomain)factor.getDomain()).getMinBound(),0); + Assert.assertEquals(3.3,(Double)((ContinuousDomain)factor.getDomain()).getMaxBound(),0); // factor 3 Factor factor3 = new Factor("testequation"); @@ -283,13 +304,14 @@ domain3.setCoefficient(0.1); domain3.setVariableName("Linf"); domain3.setReferenceValue(3.0); + domain3.setPercentageType(true); factor3.setDomain(domain3); factor3.setPath("org.nuiton.math.matrix.MatrixND#563456293453#2.456347646#dim"); factor3.setValueForIdentifier(0.2); Assert.assertEquals(2.82, (Double)factor3.getValue(),0.0000001); - Assert.assertEquals(0,(Double)((ContinuousDomain)factor.getDomain()).getMinBound(),0); - Assert.assertEquals(1,(Double)((ContinuousDomain)factor.getDomain()).getMaxBound(),0); + Assert.assertEquals(2.7,(Double)((ContinuousDomain)factor.getDomain()).getMinBound(),0); + Assert.assertEquals(3.3,(Double)((ContinuousDomain)factor.getDomain()).getMaxBound(),0); // factor 4 Factor factor4 = new Factor("testequation"); @@ -297,13 +319,14 @@ domain4.setCoefficient(0.05); domain4.setVariableName("Linf"); domain4.setReferenceValue(3.0); + domain4.setPercentageType(true); factor4.setDomain(domain4); factor4.setPath("org.nuiton.math.matrix.MatrixND#563456293453#2.456347646#dim"); factor4.setValueForIdentifier(0.1); Assert.assertEquals(2.88, (Double)factor4.getValue(),0.0000001); - Assert.assertEquals(0,(Double)((ContinuousDomain)factor.getDomain()).getMinBound(),0); - Assert.assertEquals(1,(Double)((ContinuousDomain)factor.getDomain()).getMaxBound(),0); + Assert.assertEquals(2.7,(Double)((ContinuousDomain)factor.getDomain()).getMinBound(),0); + Assert.assertEquals(3.3,(Double)((ContinuousDomain)factor.getDomain()).getMaxBound(),0); if (log.isInfoEnabled()) { log.info("factor#toString() = " + factor); @@ -352,13 +375,14 @@ Factor factor = new Factor("testclone"); factor.setPath("fr.ifremer.isisfish.entities.Cell#lenght"); factor.setComment("answer to life"); - factor.setValue(42.0); ContinuousDomain domain = new ContinuousDomain(); domain.setMinBound(0.0); domain.setMaxBound(50.0); factor.setDomain(domain); + factor.setValueForIdentifier(0.84); + // clone Factor clone = (Factor)factor.clone(); @@ -368,6 +392,6 @@ Assert.assertEquals("answer to life", clone.getComment()); Assert.assertEquals(42.0, clone.getValue()); Assert.assertNotSame(domain, clone.getDomain()); - Assert.assertEquals("id1", clone.getDomain().getValueForIdentifier("id1")); + Assert.assertEquals(42.0, clone.getDomain().getValueForIdentifier(0.84)); } } Modified: isis-fish/branches/3.3.1/src/test/java/fr/ifremer/isisfish/ui/sensitivity/FactorTreeModelTest.java =================================================================== --- isis-fish/branches/3.3.1/src/test/java/fr/ifremer/isisfish/ui/sensitivity/FactorTreeModelTest.java 2011-06-07 14:08:23 UTC (rev 3355) +++ isis-fish/branches/3.3.1/src/test/java/fr/ifremer/isisfish/ui/sensitivity/FactorTreeModelTest.java 2011-06-07 16:44:33 UTC (rev 3356) @@ -77,7 +77,7 @@ domain1.setMaxBound(50.0); factor1.setDomain(domain1); factor1.setPath("org.nuiton.factor#1234567890#0.12242345354#name"); - factor1.setValueForIdentifier(49); + factor1.setValueForIdentifier(0.5); // matrix 1 MatrixND matrix1 = MatrixFactory.getInstance().create("test1",
participants (1)
-
jcouteau@users.labs.libre-entreprise.org