package org.esa.snap.rcp.statistics;
import org.junit.Test;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.WindowConstants;
import java.awt.Component;
import java.awt.GridLayout;
import static org.junit.Assert.*;
public class AxisRangeControlTest {
@Test
public void testBindingContextInPlace() throws Exception {
final AxisRangeControl axisRangeControl = new AxisRangeControl("X-Axis");
axisRangeControl.getPanel();
assertNotNull(axisRangeControl.getBindingContext());
assertNotNull(axisRangeControl.getBindingContext().getBinding("autoMinMax"));
assertNotNull(axisRangeControl.getBindingContext().getBinding("min"));
assertNotNull(axisRangeControl.getBindingContext().getBinding("max"));
}
@Test
public void testInitialValues() throws Exception {
final AxisRangeControl axisRangeControl = new AxisRangeControl("");
axisRangeControl.getPanel();
assertEquals(true, axisRangeControl.getBindingContext().getBinding("autoMinMax").getPropertyValue());
assertEquals((Double) 0.0, axisRangeControl.getMin());
assertEquals((Double) 100.0, axisRangeControl.getMax());
}
@Test
public void testMinMaxSetterAndGetter() {
final AxisRangeControl axisRangeControl = new AxisRangeControl("");
axisRangeControl.adjustComponents(3.4, 13.8, 2);
assertEquals((Double) 3.4, axisRangeControl.getMin());
assertEquals((Double) 13.8, axisRangeControl.getMax());
}
@Test
public void testVerySmallValues() {
final AxisRangeControl axisRangeControl = new AxisRangeControl("");
axisRangeControl.getPanel();
int numDecimalPlaces = 2;
axisRangeControl.adjustComponents(-5e-9, 5e-9, numDecimalPlaces);
assertEquals(0.0, axisRangeControl.getMin(), 1e-7);
assertEquals(Math.pow(10, -numDecimalPlaces), axisRangeControl.getMax(), 1e-7);
}
@Test
public void testAdjustcomponents_valueChanges() {
final AxisRangeControl axisRangeControl = new AxisRangeControl("");
axisRangeControl.getPanel();
int numDecimalPlaces = 2;
axisRangeControl.adjustComponents(1.0, 2.0, numDecimalPlaces);
assertEquals(1.0, axisRangeControl.getMin(), 1e-7);
assertEquals(2.0, axisRangeControl.getMax(), 1e-7);
axisRangeControl.adjustComponents(1.99999999999, 2.5, numDecimalPlaces);
assertEquals(2.0, axisRangeControl.getMin(), 1e-7);
assertEquals(2.5, axisRangeControl.getMax(), 1e-7);
axisRangeControl.adjustComponents(1.0, 2.0000000000001, numDecimalPlaces);
assertEquals(1.0, axisRangeControl.getMin(), 1e-7);
assertEquals(2.0, axisRangeControl.getMax(), 1e-7);
}
@Test
public void testSetTitle() {
final String axisName = "Titel";
final AxisRangeControl control = new AxisRangeControl(axisName);
final JPanel rangeControlPanel = control.getPanel();
final Component component = rangeControlPanel.getComponent(0);
assertTrue(component instanceof TitledSeparator);
final TitledSeparator titledSeparator = (TitledSeparator) component;
final JLabel titleLabel = titledSeparator.getLabelComponent();
assertEquals(axisName, titleLabel.getText());
control.setTitleSuffix("radiance_3");
assertEquals(axisName + " (radiance_3)", titleLabel.getText());
control.setTitleSuffix("");
assertEquals(axisName, titleLabel.getText());
control.setTitleSuffix("radiance_5");
assertEquals(axisName + " (radiance_5)", titleLabel.getText());
control.setTitleSuffix(null);
assertEquals(axisName, titleLabel.getText());
}
public static void main(String[] args) throws ClassNotFoundException, UnsupportedLookAndFeelException, IllegalAccessException, InstantiationException {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
final JPanel axesPanel = new JPanel(new GridLayout(-1, 1));
axesPanel.add(new AxisRangeControl("X-Axis").getPanel());
axesPanel.add(new AxisRangeControl("Y-Axis").getPanel());
final JFrame frame = new JFrame();
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.add(axesPanel);
frame.pack();
frame.setVisible(true);
}
}