Package gov.nasa.arc.mct.fastplot.scatter

Source Code of gov.nasa.arc.mct.fastplot.scatter.TestScatterPlot

package gov.nasa.arc.mct.fastplot.scatter;

import gov.nasa.arc.mct.fastplot.bridge.PlotAbstraction;
import gov.nasa.arc.mct.fastplot.bridge.PlotConstants;
import gov.nasa.arc.mct.fastplot.bridge.PlotConstants.NonTimeAxisSubsequentBoundsSetting;
import gov.nasa.arc.mct.fastplot.bridge.PlotView;
import gov.nasa.arc.mct.fastplot.settings.PlotSettings;
import gov.nasa.arc.mct.fastplot.utils.AbbreviatingPlotLabelingAlgorithm;

import java.awt.Color;
import java.awt.Font;

import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

public class TestScatterPlot {
  private static final double EPSILON = 0.001d;
 
  private ScatterPlot  testPlot;
  private PlotSettings settings;
  private PlotAbstraction abstraction;
 
  @BeforeMethod
  public void setup() {
    settings    = new PlotSettings();
    testPlot    = new ScatterPlot(settings);
    abstraction = new PlotView.Builder(ScatterPlot.class).plotSettings(settings).build();
  }
 
  @Test
  public void testScatterPlotMatchesSettingsViaPlotView() {
    PlotSettings s = new PlotSettings();
    PlotView basePlot = new PlotView.Builder(ScatterPlot.class).plotSettings(s).build();   
    Assert.assertTrue(basePlot.plotMatchesSetting(s));
  }
 
  @Test
  public void testScatterPlotMatchesSettingsDirectly() {
    Assert.assertEquals(testPlot.getOrdinalPositionForStackedPlots(),
        settings.getOrdinalPositionForStackedPlots());
    Assert.assertEquals(testPlot.getPinTimeAxis(),
        settings.getPinTimeAxis());
    Assert.assertEquals(testPlot.getAxisOrientationSetting(),
        settings.getAxisOrientationSetting());
    Assert.assertEquals(testPlot.getMaxDependent(),
        settings.getMaxDependent());
    Assert.assertEquals(testPlot.getMaxNonTime(),
        settings.getMaxNonTime());
    Assert.assertEquals(testPlot.getMaxTime(),
        settings.getMaxTime());
    Assert.assertEquals(testPlot.getMinDependent(),
        settings.getMinDependent());
    Assert.assertEquals(testPlot.getMinNonTime(),
        settings.getMinNonTime());
    Assert.assertEquals(testPlot.getMinTime(),
        settings.getMinTime());
    Assert.assertEquals(testPlot.getNonTimeAxisSubsequentMaxSetting(),
        settings.getNonTimeAxisSubsequentMaxSetting());
    Assert.assertEquals(testPlot.getNonTimeAxisSubsequentMinSetting(),
        settings.getNonTimeAxisSubsequentMinSetting());
    Assert.assertEquals(testPlot.getNonTimeMaxPadding(),
        settings.getNonTimeMaxPadding());
    Assert.assertEquals(testPlot.getNonTimeMinPadding(),
        settings.getNonTimeMinPadding());
    Assert.assertEquals(testPlot.getTimeAxisSubsequentSetting(),
        settings.getTimeAxisSubsequentSetting());
    Assert.assertEquals(testPlot.getTimePadding(),
        settings.getTimePadding());
    Assert.assertEquals(testPlot.getXAxisMaximumLocation(),
        settings.getXAxisMaximumLocation());
    Assert.assertEquals(testPlot.getYAxisMaximumLocation(),
        settings.getYAxisMaximumLocation());
    // TODO: Connection, line style, etc (not currently featured in non-time)
  }

 
  @Test
  public void testGetPlotAbstraction() {
    PlotSettings s = new PlotSettings();
    PlotView basePlot = new PlotView.Builder(ScatterPlot.class).plotSettings(s).build();   
    ScatterPlot p = new ScatterPlot();
    p.setPlotAbstraction(basePlot);
    Assert.assertEquals(p.getPlotAbstraction(), basePlot);

    // Should also pull recognize PlotAbstraction from constructor
    p = new ScatterPlot(basePlot);   
    Assert.assertEquals(p.getPlotAbstraction(), basePlot);
   
    // Finally, should also take abstraction used by createChart
    invokeCreateChart(p);
    Assert.assertEquals(p.getPlotAbstraction(), abstraction);
  }
 
  @Test
  public void testSetTimeAxisStartAndStop() {
    testPlot.setTimeAxisStartAndStop(1000L, 64000L);
    Assert.assertEquals(testPlot.getCurrentTimeAxisMin().getTimeInMillis(), 1000L);
    Assert.assertEquals(testPlot.getCurrentTimeAxisMax().getTimeInMillis(), 64000L);
    testPlot.setTimeAxisStartAndStop(128000L, 300000L);
    Assert.assertEquals(testPlot.getCurrentTimeAxisMin().getTimeInMillis(), 128000L);
    Assert.assertEquals(testPlot.getCurrentTimeAxisMax().getTimeInMillis(), 300000L);
   
    // Should still be able to retrieve initial time axis setting
    Assert.assertEquals(testPlot.getInitialTimeMaxSetting(), settings.getMaxTime());
    Assert.assertEquals(testPlot.getInitialTimeMinSetting(), settings.getMinTime());
  }
   
  @Test
  public void testNonTimeAxisAutoExpands() {
    settings.setNonTimeAxisSubsequentMaxSetting(NonTimeAxisSubsequentBoundsSetting.AUTO);
    settings.setNonTimeAxisSubsequentMinSetting(NonTimeAxisSubsequentBoundsSetting.AUTO);
    settings.setNonTimeMinPadding(0);
    settings.setNonTimeMaxPadding(0);
    settings.setMinNonTime(-1);
    settings.setMaxNonTime( 1);
    settings.setMinDependent(-1);
    settings.setMaxDependent( 1);
    settings.setMinTime(0);
    settings.setMaxTime(14000);
   
    testPlot = new ScatterPlot(settings);
    invokeCreateChart(testPlot);
    Assert.assertEquals(testPlot.getNonTimeMinDataValueCurrentlyDisplayed(), -1, EPSILON);
    Assert.assertEquals(testPlot.getNonTimeMaxDataValueCurrentlyDisplayed()1, EPSILON);

    Assert.assertEquals(testPlot.getDataSetSize(), 0);
    testPlot.addDataSet("xData", Color.WHITE);
    testPlot.addDataSet("xData" + PlotConstants.NON_TIME_FEED_SEPARATOR + "yData", Color.WHITE, "Test Data");
    Assert.assertEquals(testPlot.getDataSetSize(), 1); // Should only count plottable data set
   
    Assert.assertTrue(testPlot.isKnownDataSet("xData"));
    Assert.assertTrue(testPlot.isKnownDataSet("yData"));
   
    // Shouldn't start marching yet...
    for (double t = 0; t < Math.PI * 2; t += Math.PI/100.0) {
      testPlot.addData("xData", (long) (t * 1000), Math.sin(t));
      testPlot.addData("yData", (long) (t * 1000), Math.cos(t));
      Assert.assertEquals(testPlot.getNonTimeMinDataValueCurrentlyDisplayed(), -1, EPSILON);
      Assert.assertEquals(testPlot.getNonTimeMaxDataValueCurrentlyDisplayed()1, EPSILON);
    }
   
    // But now, we should auto-expand
    for (double t = 0; t < Math.PI * 2; t += Math.PI/100.0) {
      // Make sure new data is inserted after last timestamp of old data
      // (insertion of data into middle of existing series is unsupported)
      testPlot.addData("xData", 7000 + (long) (t * 1000), 2*Math.sin(t));
      testPlot.addData("yData", 7000 + (long) (t * 1000), 2*Math.cos(t));
    }
    Assert.assertEquals(testPlot.getNonTimeMinDataValueCurrentlyDisplayed(), -2, EPSILON);
    Assert.assertEquals(testPlot.getNonTimeMaxDataValueCurrentlyDisplayed()2, EPSILON);

    // Initial setting should still be retrievable
    Assert.assertEquals(testPlot.getInitialNonTimeMinSetting(), -1, EPSILON);
    Assert.assertEquals(testPlot.getInitialNonTimeMaxSetting()1, EPSILON);
   
  }
 
  private void invokeCreateChart(ScatterPlot plot) {
    plot.createChart(
        Font.decode(Font.SERIF), 1,
        Color.BLACK, Color.BLACK,
        0, Color.BLACK,
        Color.BLACK, Color.BLACK,
        "", Color.BLACK,
        Color.BLACK, 10,
        false, false,
        false, abstraction,
        new AbbreviatingPlotLabelingAlgorithm());
  }
}
TOP

Related Classes of gov.nasa.arc.mct.fastplot.scatter.TestScatterPlot

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.