Package gov.nasa.arc.mct.fastplot.settings.controls

Source Code of gov.nasa.arc.mct.fastplot.settings.controls.TestPlotSettingsAxisGroup$PlotSettingsAxisGroupTester

package gov.nasa.arc.mct.fastplot.settings.controls;

import gov.nasa.arc.mct.fastplot.settings.PlotConfiguration;
import gov.nasa.arc.mct.fastplot.settings.PlotSettings;
import gov.nasa.arc.mct.fastplot.settings.controls.TestPlotSettingsAxisGroup.PlotSettingsAxisGroupTester.BoundOption;
import gov.nasa.arc.mct.fastplot.view.NumericTextField;
import gov.nasa.arc.mct.fastplot.view.PlotViewManifestation;
import gov.nasa.arc.mct.fastplot.view.TimeDuration;
import gov.nasa.arc.mct.fastplot.view.TimeSpanTextField;

import java.awt.Component;

import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;

import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

public class TestPlotSettingsAxisGroup {
  private static final String TEST_NAME = "TestName";
 
  private static final double EPSILON   = 0.01;
  private static final int SETTINGS_MIN = -100;
  private static final int SETTINGS_MAX =  100;
  private static final int PLOT_MIN     = -50;
  private static final int PLOT_MAX     =  50;
  private static final int SPAN         =  33;
 

  private static final long PLOT_MIN_TIME =  1000;
  private static final long PLOT_MAX_TIME = 31000;
 
  private static final String[] TEST_TITLES = { "Title0", "Title1" };
 
  private PlotSettings settings;
 
  @Mock PlotViewManifestation view;
 
  @BeforeMethod
  public void setup() {
    MockitoAnnotations.initMocks(this);
    Mockito.when(view.getCurrentMCTTime()).thenReturn(PLOT_MIN_TIME);
    settings = new PlotSettings();
    settings.setMinNonTime(SETTINGS_MIN);
    settings.setMaxNonTime(SETTINGS_MAX);
  }
 
  @Test
  public void testNonTimeManualMatchesSettings() {
    PlotSettingsAxisGroupTester axisGroup = new PlotSettingsAxisGroupTester(false);
    axisGroup.reset(settings, true);

    JComponent minManual = axisGroup.getControl(false, BoundOption.MANUAL, true);
    JComponent maxManual = axisGroup.getControl(true , BoundOption.MANUAL, true);

    Assert.assertEquals(Double.parseDouble(((JTextField) minManual).getText()),
        SETTINGS_MIN, EPSILON);
    Assert.assertEquals(Double.parseDouble(((JTextField) maxManual).getText()),
        SETTINGS_MAX, EPSILON);   
  }

  @Test
  public void testNonTimeCurrentMatchesPlot() {
    PlotSettingsAxisGroupTester axisGroup = new PlotSettingsAxisGroupTester(false);
    axisGroup.reset(settings, true);
    axisGroup.updateFrom(view);

    JLabel min = (JLabel) axisGroup.getControl(false, BoundOption.CURRENT, true);
    JLabel max = (JLabel) axisGroup.getControl(true , BoundOption.CURRENT, true);

    Assert.assertEquals(Double.parseDouble(min.getText().replaceAll("[\\(\\)]", "")),
        PLOT_MIN, EPSILON);
    Assert.assertEquals(Double.parseDouble(max.getText().replaceAll("[\\(\\)]", "")),
        PLOT_MAX, EPSILON);   
  }
 
  @Test
  public void testNonTimeAutoMatchesSpan() {
    PlotSettingsAxisGroupTester axisGroup = new PlotSettingsAxisGroupTester(false);
    axisGroup.reset(settings, true);
    axisGroup.updateFrom(view);
   
    NumericTextField span =  (NumericTextField) axisGroup.getSpanControl(true);
    span.setValue(SPAN);   
   
    JLabel min = (JLabel) axisGroup.getControl(false, BoundOption.AUTO, true);
    JLabel max = (JLabel) axisGroup.getControl(true , BoundOption.AUTO, true);
   
    ((JRadioButton) axisGroup.getControl(false, BoundOption.MANUAL, false)).doClick();
    span.setValue(SPAN)
    ((JRadioButton) axisGroup.getControl(true , BoundOption.AUTO, false)).doClick();     
    Assert.assertEquals(Double.parseDouble(max.getText().replaceAll("[\\(\\)]", "")),
        SETTINGS_MIN + SPAN, EPSILON);   

    ((JRadioButton) axisGroup.getControl(true , BoundOption.MANUAL, false)).doClick();
    span.setValue(SPAN)
    ((JRadioButton) axisGroup.getControl(false, BoundOption.AUTO, false)).doClick();     
    Assert.assertEquals(Double.parseDouble(min.getText().replaceAll("[\\(\\)]", "")),
        SETTINGS_MAX - SPAN, EPSILON);   

  }
 

  @Test
  public void testTimeCurrentMatchesPlot() {
    PlotSettingsAxisGroupTester axisGroup = new PlotSettingsAxisGroupTester(true);
    axisGroup.reset(settings, true);
    axisGroup.updateFrom(view);

    JLabel min = (JLabel) axisGroup.getControl(false, BoundOption.CURRENT, true);
    JLabel max = (JLabel) axisGroup.getControl(true , BoundOption.CURRENT, true);

    Assert.assertEquals(min.getText().replaceAll("[\\(\\)]", ""), "001/00:00:01 1969");
    Assert.assertEquals(max.getText().replaceAll("[\\(\\)]", ""), "001/00:00:31 1969");   
  }

  @Test
  public void testTimeAutoMatchesSpan() {
    PlotSettingsAxisGroupTester axisGroup = new PlotSettingsAxisGroupTester(true);
    axisGroup.reset(settings, true);
    axisGroup.updateFrom(view);
   
    JLabel max = (JLabel) axisGroup.getControl(true , BoundOption.AUTO, true);
   
    TimeSpanTextField span =  (TimeSpanTextField) axisGroup.getSpanControl(true);
   
    ((JRadioButton) axisGroup.getControl(false, BoundOption.CURRENT, false)).doClick();
    span.setTime(new TimeDuration(15000l));
    ((JRadioButton) axisGroup.getControl(true , BoundOption.AUTO, false)).doClick();     
    Assert.assertEquals(max.getText().replaceAll("[\\(\\)]", ""), "001/00:00:16 1969");
  }

 
  @Test
  public void testGetSetTitle() {   
    PlotSettingsAxisGroupTester axisGroup = new PlotSettingsAxisGroupTester(true);
    for (String s : TEST_TITLES) {
      axisGroup.setTitle(s);
      Assert.assertEquals(axisGroup.getTitle(), s);
    }
  }
 
  public static class PlotSettingsAxisGroupTester extends PlotSettingsAxisGroup {
    private static final long serialVersionUID = -7947400808583335533L;
    private boolean temporal;
   
    public PlotSettingsAxisGroupTester(boolean temporal) {
      super(temporal);
      this.temporal = temporal;
      setName(TEST_NAME);
      add(getMinControls());
      add(getMaxControls());
      add(getSpanControls());
    }

    @Override
    public void setBounds(PlotConfiguration settings, double min, double max) {
      settings.setMinNonTime(min);
      settings.setMaxNonTime(max);
    }

    @Override
    public double getBoundMinimum(PlotConfiguration settings) {
      return temporal ? settings.getMinTime() : settings.getMinNonTime();
    }

    @Override
    public double getBoundMaximum(PlotConfiguration settings) {
      return temporal ? settings.getMaxTime() : settings.getMaxNonTime();
    }

    @Override
    public double getActualMinimum(PlotViewManifestation view) {
      return temporal ? PLOT_MIN_TIME : PLOT_MIN;
    }

    @Override
    public double getActualMaximum(PlotViewManifestation view) {
      return temporal ? PLOT_MAX_TIME : PLOT_MAX;
    }
   
    public JComponent getControl (boolean maximal, BoundOption boundOpt, boolean isValue) {
      return find(this, TEST_NAME +
          (maximal ? MAX_SUFFIX : MIN_SUFFIX) +
          boundOpt.getSuffix() +
          (isValue ? VALUE_SUFFIX : "")
          );
    }
   
    public JComponent getSpanControl (boolean isValue) {
      return find(this, TEST_NAME +
          SPAN_SUFFIX +
          (isValue ? VALUE_SUFFIX : "")
          );
    }
   
    private JComponent find(JComponent parent, String name) {
      if (parent.getName() != null && parent.getName().equals(name)) return parent;
      for (Component c : parent.getComponents()) {
        if (c != null && c instanceof JComponent) {
          JComponent child = find((JComponent) c, name);
          if (child != null) {
            return child;
          }
        }
      }
      return null;
    }
   
    public enum BoundOption {
      AUTO()    { public String getSuffix() { return AUTO_SUFFIX;    } } ,
      CURRENT() { public String getSuffix() { return CURRENT_SUFFIX; } } ,
      MANUAL()  { public String getSuffix() { return MANUAL_SUFFIX;  } } ;
      public abstract String getSuffix();
    }
   
  }
}
TOP

Related Classes of gov.nasa.arc.mct.fastplot.settings.controls.TestPlotSettingsAxisGroup$PlotSettingsAxisGroupTester

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.