[Lutinmatrix-commits] r125 - in lutinmatrix/trunk/src: main/java/org/codelutin/math/matrix test/java/org/codelutin/math/matrix
Author: chatellier Date: 2009-03-04 10:29:44 +0000 (Wed, 04 Mar 2009) New Revision: 125 Modified: lutinmatrix/trunk/src/main/java/org/codelutin/math/matrix/MatrixStringEncoder.java lutinmatrix/trunk/src/test/java/org/codelutin/math/matrix/MatrixStringEncoderTest.java Log: Specials chars on columns names \" Modified: lutinmatrix/trunk/src/main/java/org/codelutin/math/matrix/MatrixStringEncoder.java =================================================================== --- lutinmatrix/trunk/src/main/java/org/codelutin/math/matrix/MatrixStringEncoder.java 2009-03-04 09:44:40 UTC (rev 124) +++ lutinmatrix/trunk/src/main/java/org/codelutin/math/matrix/MatrixStringEncoder.java 2009-03-04 10:29:44 UTC (rev 125) @@ -25,6 +25,7 @@ import org.apache.commons.beanutils.BeanUtilsBean; import org.apache.commons.beanutils.ConvertUtilsBean; +import org.apache.commons.lang.StringEscapeUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.codelutin.util.StringUtil; @@ -166,7 +167,7 @@ String result = "["; String sep = ""; for (int i = 0; i < dimNamesArray.length; i++) { - result += sep + '"' + dimNamesArray[i] + '"'; + result += sep + '"' + StringEscapeUtils.escapeJava(dimNamesArray[i]) + '"'; sep = ", "; } result += "]"; @@ -188,7 +189,9 @@ for (int i = 0; i < result.length; i++) { result[i] = result[i].trim(); if (result[i].startsWith("\"") && result[i].endsWith("\"")) { - result[i] = result[i].substring(1, result[i].length() - 1); // remove " and " + String resultString = result[i].substring(1, result[i].length() - 1);// remove " and " + resultString = StringEscapeUtils.unescapeJava(resultString); + result[i] = resultString; } } return result; Modified: lutinmatrix/trunk/src/test/java/org/codelutin/math/matrix/MatrixStringEncoderTest.java =================================================================== --- lutinmatrix/trunk/src/test/java/org/codelutin/math/matrix/MatrixStringEncoderTest.java 2009-03-04 09:44:40 UTC (rev 124) +++ lutinmatrix/trunk/src/test/java/org/codelutin/math/matrix/MatrixStringEncoderTest.java 2009-03-04 10:29:44 UTC (rev 125) @@ -142,5 +142,39 @@ Assert.assertEquals(2.345, matrix.getValue(1, 1), 0); Assert.assertEquals(-8.321, matrix.getValue(1, 4), 0); } + + @Test + public void testMatrixNamesSpecialChars() { + + MatrixND mat1 = getFactory().create(new int[] { 3, 2, 1 }); + mat1.setValue(0, 0, 0, -1.0E-7); + mat1.setValue(1, 1, 0, 2); + mat1.setValue(2, 1, 0, 5.0E-7); + mat1.setDimensionNames(new String[]{"col \"1\", \"2\"","col \"3\", \"4\""}); + String rep = stringEncoder.getMatrixAsString(mat1); + + System.out.println(rep); + + Assert.assertTrue("Null() semantics missing", rep.indexOf("null()") > 0); + Assert.assertTrue("Dimentation missing", rep.indexOf("3, 2, 1") > 0); + Assert.assertTrue("Data missing", rep.indexOf("[2.0]") > 0); + Assert.assertTrue("Wrong string encoding", rep.indexOf("\"col \\\"1\\\", \\\"2\\\"\", \"col \\\"3\\\", \\\"4\\\"\", \"\"") > 0); + } + + @Test + public void testMatrixFromNamesSpecialChars() { + String representation = "[,[3, 2, 1],[\"col \\\"1\\\", \\\"2\\\"\", \"col \\\"3\\\", \\\"4\\\"\", \"\"],[[null(), null(), null()], [null(), null()], [null()]],[[[-1.0E-7], [0.0]], [[0.0], [2.0]], [[0.0], [5.0E-7]]]]"; + + MatrixND matrix = stringEncoder.getMatrixFromString(representation); + + Assert.assertEquals(3, matrix.getDim()[0]); + Assert.assertEquals(2, matrix.getDim()[1]); + Assert.assertEquals(1, matrix.getDim()[2]); + Assert.assertEquals(-1.0E-7, matrix.getValue(0, 0, 0), 0); + Assert.assertEquals(2, matrix.getValue(1, 1, 0), 0); + Assert.assertEquals(5.0E-7, matrix.getValue(2, 1, 0), 0); + Assert.assertEquals("col \"1\", \"2\"", matrix.getDimensionNames()[0]); + Assert.assertEquals("col \"3\", \"4\"", matrix.getDimensionNames()[1]); + } } // MatrixHelperTest
participants (1)
-
chatellierï¼ users.labs.libre-entreprise.org