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 java.awt.Component;
import javax.swing.AbstractButton;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class TestPlotSettingsCheckBox {
private PlotSettings settings;
private static final boolean[] STATES = { false, true };
@BeforeMethod
public void setup() {
settings = new PlotSettings();
}
@Test
public void testInitialSetting() {
for (boolean b : STATES) {
Tester t = new Tester();
settings.setOrdinalPositionForStackedPlots(b);
t.reset(settings, true);
Assert.assertEquals(t.isSelected(), b);
}
}
@Test
public void testSoftReset() {
for (boolean b : STATES) {
Tester t = new Tester();
settings.setOrdinalPositionForStackedPlots(b);
t.reset(settings, true);
Assert.assertEquals(t.isSelected(), b);
settings.setOrdinalPositionForStackedPlots(!b);
t.reset(settings, false);
Assert.assertEquals(t.isSelected(), b); // Should not change
}
}
@Test
public void testHardReset() {
for (boolean b : STATES) {
Tester t = new Tester();
settings.setOrdinalPositionForStackedPlots(b);
t.reset(settings, true);
Assert.assertEquals(t.isSelected(), b);
settings.setOrdinalPositionForStackedPlots(!b);
t.reset(settings, true);
Assert.assertEquals(t.isSelected(), !b); // Should change
}
}
@Test
public void testValidAndDirtyFlags() {
for (boolean b : STATES) {
Tester t = new Tester();
settings.setOrdinalPositionForStackedPlots(b);
t.reset(settings, true);
for (int i = 0; i < 10; i++) {
// Should always be valid
Assert.assertTrue(t.isValidated());
// Should be dirty every other click
Assert.assertEquals(t.isDirty(), i % 2 == 1);
t.click();
}
}
}
private static class Tester extends PlotSettingsCheckBox {
private static final long serialVersionUID = 1019496761275527323L;
public Tester() {
super("Tester");
}
@Override
public boolean getFrom(PlotConfiguration settings) {
return settings.getOrdinalPositionForStackedPlots();
}
@Override
public void populate(PlotConfiguration settings) {
settings.setOrdinalPositionForStackedPlots(isSelected());
}
public void click() {
for (Component c : getComponents()) {
if (c instanceof AbstractButton) {
((AbstractButton) c).doClick();
}
}
}
}
}