package uws.job.parameters; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; import static org.junit.Assert.fail; import org.junit.Before; import org.junit.Test; import uws.UWSException; public class TestNumericParamController { @Before public void setUp() throws Exception{} @Test public void testSetMinimum(){ // Just a minimum value => no problem to change it: NumericParamController controller = new NumericParamController(); controller.setMinimum(-23); assertEquals(-23, controller.getMinimum().intValue()); controller.setMinimum(0); assertEquals(0, controller.getMinimum().intValue()); // But if there is a maximum... // either the new minimum is less than the maximum => ok controller = new NumericParamController(); controller.setMaximum(100); controller.setMinimum(20); assertEquals(20, controller.getMinimum()); // or it is bigger => it must be set to the maximum: controller = new NumericParamController(); controller.setMaximum(10); controller.setMinimum(20); assertEquals(10, controller.getMinimum()); // If there is a default value and this value is smaller than the new minimum => default = min controller = new NumericParamController(); controller.setDefault(10); controller.setMaximum(50); assertNull(controller.getMinimum()); assertEquals(50, controller.getMaximum()); assertEquals(10, controller.getDefault()); controller.setMinimum(20); assertEquals(20, controller.getMinimum()); assertEquals(50, controller.getMaximum()); assertEquals(20, controller.getDefault()); // NULL given => NULL set: controller = new NumericParamController(); controller.setMinimum(null); assertNull(controller.getMinimum()); controller.setMinimum(23); assertEquals(23, controller.getMinimum()); controller.setMinimum(null); assertNull(controller.getMinimum()); } @Test public void testSetMaximum(){ // Just a minimum value => no problem to change it: NumericParamController controller = new NumericParamController(); controller.setMaximum(23); assertEquals(23, controller.getMaximum().intValue()); controller.setMaximum(0); assertEquals(0, controller.getMaximum().intValue()); // But if there is a minimum... // either the new maximum is bigger than the minimum => ok controller = new NumericParamController(); controller.setMinimum(10); controller.setMaximum(20); assertEquals(20, controller.getMaximum()); // or it is smaller => it must be set to the minimum: controller = new NumericParamController(); controller.setMinimum(20); controller.setMaximum(0); assertEquals(20, controller.getMaximum()); // If there is a default value and this value is bigger than the new maximum => default = max controller = new NumericParamController(); controller.setDefault(50); controller.setMinimum(20); assertEquals(20, controller.getMinimum()); assertNull(controller.getMaximum()); assertEquals(50, controller.getDefault()); controller.setMaximum(30); assertEquals(20, controller.getMinimum()); assertEquals(30, controller.getMaximum()); assertEquals(30, controller.getDefault()); // NULL given => NULL set: controller = new NumericParamController(); controller.setMaximum(null); assertNull(controller.getMaximum()); controller.setMaximum(23); assertEquals(23, controller.getMaximum()); controller.setMaximum(null); assertNull(controller.getMaximum()); } @Test public void testSetDefault(){ // No limit => everything is allowed for the default value: NumericParamController controller = new NumericParamController(); controller.setDefault(23); assertEquals(23, ((Number)controller.getDefault()).intValue()); controller.setDefault(-123); assertEquals(-123, ((Number)controller.getDefault()).intValue()); // If there is a maximum... // either default is smaller (or equals) => ok controller = new NumericParamController(); controller.setMaximum(50); controller.setDefault(20); assertEquals(20, ((Number)controller.getDefault()).intValue()); controller.setDefault(50); assertEquals(50, ((Number)controller.getDefault()).intValue()); controller.setDefault(-123); assertEquals(-123, ((Number)controller.getDefault()).intValue()); // or default is bigger => default = max controller = new NumericParamController(); controller.setMaximum(50); controller.setDefault(70); assertEquals(50, ((Number)controller.getDefault()).intValue()); // If there is a minimum... // either default is bigger (or equals) => ok controller = new NumericParamController(); controller.setMinimum(10); controller.setDefault(20); assertEquals(20, ((Number)controller.getDefault()).intValue()); controller.setDefault(10); assertEquals(10, ((Number)controller.getDefault()).intValue()); controller.setDefault(123); assertEquals(123, ((Number)controller.getDefault()).intValue()); // or default is smaller => default = min controller = new NumericParamController(); controller.setMinimum(10); controller.setDefault(0); assertEquals(10, ((Number)controller.getDefault()).intValue()); // NULL given => NULL set: controller = new NumericParamController(); controller.setDefault(null); assertNull(controller.getDefault()); controller.setDefault(23); assertEquals(23, controller.getDefault()); controller.setDefault(null); assertNull(controller.getDefault()); } @Test public void testReset(){ // Just a minimum: NumericParamController controller = new NumericParamController(); controller.reset(null, 23, null); assertNull(controller.getDefault()); assertNull(controller.getMaximum()); assertEquals(23, controller.getMinimum()); // Just a maximum: controller.reset(null, null, 23); assertNull(controller.getDefault()); assertNull(controller.getMinimum()); assertEquals(23, controller.getMaximum()); // Just a default: controller.reset(23, null, null); assertNull(controller.getMinimum()); assertNull(controller.getMaximum()); assertEquals(23, controller.getDefault()); // min < default < max controller.reset(20, 10, 30); assertEquals(10, controller.getMinimum()); assertEquals(30, controller.getMaximum()); assertEquals(20, controller.getDefault()); // default < min < max controller.reset(0, 10, 30); assertEquals(10, controller.getMinimum()); assertEquals(30, controller.getMaximum()); assertEquals(10, controller.getDefault()); // default > max > min controller.reset(50, 10, 30); assertEquals(10, controller.getMinimum()); assertEquals(30, controller.getMaximum()); assertEquals(30, controller.getDefault()); } @Test public void testCheck(){ // min < value < max => value NumericParamController controller = new NumericParamController(); controller.reset(20, 10, 30); try{ assertEquals(15, controller.check(15)); }catch(UWSException e){ e.printStackTrace(System.err); fail("Unexpected error! See the console for more details about the error."); } // No value => default controller = new NumericParamController(); controller.reset(20, 10, 30); try{ assertEquals(20, controller.check(null)); }catch(UWSException e){ e.printStackTrace(System.err); fail("Unexpected error! See the console for more details about the error."); } // value < min => min controller = new NumericParamController(); controller.reset(20, 10, 30); try{ assertEquals(10, controller.check(0)); }catch(UWSException e){ e.printStackTrace(System.err); fail("Unexpected error! See the console for more details about the error."); } // value > max => max controller = new NumericParamController(); controller.reset(20, 10, 30); try{ assertEquals(30, controller.check(50)); }catch(UWSException e){ e.printStackTrace(System.err); fail("Unexpected error! See the console for more details about the error."); } } }