/*
* Copyright (C) 2010 Brockmann Consult GmbH (info@brockmann-consult.de)
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation; either version 3 of the License, or (at your option)
* any later version.
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, see http://www.gnu.org/licenses/
*/
package org.esa.snap.ui.diagram;
import junit.framework.TestCase;
import java.io.IOException;
import java.io.StringReader;
import java.io.StringWriter;
public class DiagramGraphIOTest extends TestCase {
public void testIOWithEqualXValues() throws IOException {
double[] expectedXValues = new double[]{0, 1, 2, 3, 4, 5};
double[] expectedY1Values = new double[]{0, 1, 4, 9, 16, 25};
double[] expectedY2Values = new double[]{0, 1, 2, 3, 5, 8};
double[] expectedY3Values = new double[]{0.5, 0.4, 0.3, 0.2, 0.1, 0.0};
DiagramGraph[] expectedGraphs = new DefaultDiagramGraph[]{
new DefaultDiagramGraph("x", expectedXValues, "y1", expectedY1Values),
new DefaultDiagramGraph("x", expectedXValues, "y2", expectedY2Values),
new DefaultDiagramGraph("x", expectedXValues, "y3", expectedY3Values)
};
testIO(expectedGraphs);
}
public void testIOWithDifferentXValues() throws IOException {
double[] expectedX1Values = new double[]{0, 1, 2, 3, 4, 5};
double[] expectedY1Values = new double[]{0, 1, 2, 3, 5, 8};
double[] expectedX2Values = new double[]{4, 9, 16, 25}; // length = 4!
double[] expectedY2Values = new double[]{0.3, 0.2, 0.1, 0.0}; // length = 4!
DiagramGraph[] expectedGraphs = new DefaultDiagramGraph[]{
new DefaultDiagramGraph("x1", expectedX1Values, "y1", expectedY1Values),
new DefaultDiagramGraph("x2", expectedX2Values, "y2", expectedY2Values),
};
testIO(expectedGraphs);
}
private void testIO(DiagramGraph[] expectedGraphs) throws IOException {
StringWriter writer1 = new StringWriter();
DiagramGraphIO.writeGraphs(expectedGraphs, writer1);
DiagramGraph[] actualGraphs = DiagramGraphIO.readGraphs(new StringReader(writer1.toString()));
assertEqualGraphs(actualGraphs, expectedGraphs);
StringWriter writer2 = new StringWriter();
DiagramGraphIO.writeGraphs(expectedGraphs, writer2);
assertEquals(writer1.toString(), writer2.toString());
}
private void assertEqualGraphs(DiagramGraph[] actualGraphs, DiagramGraph[] expectedGraphs) {
assertNotNull(actualGraphs.length);
assertEquals(expectedGraphs.length, actualGraphs.length);
for (int i = 0; i < expectedGraphs.length; i++) {
assertEqualGraphs(expectedGraphs[i], actualGraphs[i]);
}
}
private void assertEqualGraphs(DiagramGraph expectedGraph, DiagramGraph actualGraph) {
assertNotNull(actualGraph);
assertEquals(expectedGraph.getXName(), actualGraph.getXName());
assertEquals(expectedGraph.getYName(), actualGraph.getYName());
assertEquals(expectedGraph.getNumValues(), actualGraph.getNumValues());
for (int i = 0; i < expectedGraph.getNumValues(); i++) {
assertEquals(expectedGraph.getXValueAt(i), actualGraph.getXValueAt(i), 1e-10);
assertEquals(expectedGraph.getYValueAt(i), actualGraph.getYValueAt(i), 1e-10);
}
}
}