/*
* ATestJChart2D.java, base class for testing two charts stacked on top
* od each other.
* Copyright (C) Achim Westermann, created on 23.04.2005, 08:21:12
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
* If you modify or optimize the code in a useful way please let me know.
* Achim.Westermann@gmx.de
*
*/
package info.monitorenter.gui.chart.test;
import info.monitorenter.gui.chart.Chart2D;
import info.monitorenter.gui.chart.ITrace2D;
import info.monitorenter.gui.chart.axis.AAxis;
import info.monitorenter.gui.chart.dialogs.ModalDialog;
import java.awt.Dimension;
import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import junit.framework.Assert;
import junit.framework.TestCase;
/**
* Base class for testing JChart2D.
* <p>
*
* @author Bill Schoolfield
*
*/
public abstract class ATestStackedJChart2D extends TestCase {
/** The x axis configured for the test chart. */
protected AAxis<?> m_axisX1;
/** The y axis configured for the test chart. */
protected AAxis<?> m_axisY1;
/** The traces configured for the test chart. */
protected ITrace2D[] m_traces1;
/** The test chart. */
protected Chart2D m_chart1;
/** The x axis configured for the 2nd test chart. */
protected AAxis<?> m_axisX2;
/** The y axis configured for the 2nd test chart. */
protected AAxis<?> m_axisY2;
/** The traces configured for the 2nd test chart. */
protected ITrace2D[] m_traces2;
/** The test 2nd chart. */
protected Chart2D m_chart2;
/** The frame to show the test chart. */
protected JFrame m_frame;
/**
* Constructor with the test name.
* <p>
*
* @param arg0
* the name of the test.
*/
public ATestStackedJChart2D(final String arg0) {
super(arg0);
}
/**
* Implement and return an instance of the type to test.
* <p>
*
* @return the <code>{@link AAxis}</code> to test.
*/
protected abstract AAxis<?> createAxisX();
/**
* Implement and return an instance of the type to test.
* <p>
*
* @return the y axis to test.
*/
protected abstract AAxis<?> createAxisY();
/**
* Implement and return the instances of the type to test.
* <p>
*
* @return the traces to test.
*/
protected abstract ITrace2D[] createTraces();
/**
* Template method that fills the configured trace for the 1st chart with data.
* <p>
*
* @param trace2D
* this class will use the internal configured trace for the test.
*/
protected abstract void fillTrace1(ITrace2D trace2D);
/**
* Template method that fills the configured trace for the 2nd chart with data.
* <p>
*
* @param trace2D
* this class will use the internal configured trace for the test.
*/
protected abstract void fillTrace2(ITrace2D trace2D);
/**
* Returns the 1st chart.
* <p>
*
* @return the 1st chart
*/
public final Chart2D getChart1() {
return this.m_chart1;
}
/**
* Returns the 2nd chart.
* <p>
*
* @return the 2nd chart
*/
public final Chart2D getChart2() {
return this.m_chart2;
}
/**
* Returns the traces for 1st chart.
* <p>
*
* @return the traces for 1st chart
*/
public final ITrace2D[] getTraces1() {
return this.m_traces1;
}
/**
* Returns the traces for the 2nd chart.
* <p>
*
* @return the traces for the 2nd chart
*/
public final ITrace2D[] getTraces2() {
return this.m_traces2;
}
/**
* Sets up a chart and shows it in a frame.
* <p>
*
* @see junit.framework.TestCase#setUp()
*/
@Override
protected void setUp() throws Exception {
super.setUp();
this.m_axisX1 = this.createAxisX();
this.m_axisX1.setPaintGrid(true);
this.m_axisY1 = this.createAxisY();
this.m_axisY1.setPaintGrid(true);
this.m_axisX2 = this.createAxisX();
this.m_axisX2.setPaintGrid(true);
this.m_axisY2 = this.createAxisY();
this.m_axisY2.setPaintGrid(true);
this.m_traces1 = this.createTraces();
this.m_chart1 = new Chart2D();
this.m_chart1.setAxisXBottom(this.m_axisX1, 0);
this.m_chart1.setAxisYLeft(this.m_axisY1, 0);
for (int i = 0; i < this.m_traces1.length; i++) {
this.m_chart1.addTrace(this.m_traces1[i]);
}
Assert.assertNotSame(this.m_axisX1, this.m_axisY1);
for (int i = 0; i < this.m_traces1.length; i++) {
this.fillTrace1(this.m_traces1[i]);
}
this.m_traces2 = this.createTraces();
this.m_chart2 = new Chart2D();
this.m_chart2.setAxisXBottom(this.m_axisX2, 0);
this.m_chart2.setAxisYLeft(this.m_axisY2, 0);
for (int i = 0; i < this.m_traces2.length; i++) {
this.m_chart2.addTrace(this.m_traces2[i]);
}
Assert.assertNotSame(this.m_axisX2, this.m_axisY2);
for (int i = 0; i < this.m_traces2.length; i++) {
this.fillTrace2(this.m_traces2[i]);
}
this.m_axisY2.setPixelXRight(this.m_axisY1.getPixelXRight());
this.m_chart2.setSynchronizedXStartChart(this.m_chart1);
this.m_frame = new JFrame();
this.m_frame.setLayout(new GridLayout(0, 1));
this.m_frame.getContentPane().add(this.m_chart1);
this.m_frame.getContentPane().add(this.m_chart2);
this.m_frame.setSize(400, 600);
this.m_frame.setVisible(true);
Thread.sleep(1000);
}
/**
* @see junit.framework.TestCase#tearDown()
*/
@Override
protected void tearDown() throws Exception {
JTextArea textArea = new JTextArea();
textArea.setEditable(false);
textArea.setText("Does the result look ok?");
ModalDialog dialog = new ModalDialog(this.m_frame, "Judge operation ", textArea);
dialog.setSize(new Dimension(400, 100));
dialog.showDialog();
boolean failure = false;
if (!dialog.isOk()) {
failure = true;
}
if (failure) {
Assert.fail("Operation test was judged as a failure. ");
}
super.tearDown();
this.m_frame.setVisible(false);
this.m_frame.dispose();
}
}