/** Tests the storage of matrix parameters. */ @Test public void testMatrixEdit() { final int size = 8; final Random random = new Random(47821365); final GeneralMatrix matrix = new GeneralMatrix(size); for (int j = 0; j < size; j++) { for (int i = 0; i < size; i++) { matrix.setElement(j, i, 200 * random.nextDouble() - 100); } } final MatrixParameterDescriptors descriptor = new MatrixParameterDescriptors(Collections.singletonMap("name", "Test")); for (int height = 2; height <= size; height++) { for (int width = 2; width <= size; width++) { MatrixParameters parameters = (MatrixParameters) descriptor.createValue(); GeneralMatrix copy = matrix.clone(); copy.setSize(height, width); parameters.setMatrix(copy); assertEquals( "height", height, ((Parameter) parameters.parameter("num_row")).intValue()); assertEquals( "width", width, ((Parameter) parameters.parameter("num_col")).intValue()); assertTrue("equals", copy.equals(parameters.getMatrix(), 0)); assertEquals("equals", parameters, parameters.clone()); } } }
/** * Tests integer and floating point values in a wide range of values. Some on those values are * cached (e.g. 0, 90, 360) because frequently used. It should be transparent to the user. Test * also unit conversions (degrees to radians in this case). */ @Test public void testSequence() { for (int i = -1000; i <= 1000; i++) { assertEquals("new (Integer, ...)", i, Parameter.create("Integer", i).intValue()); assertEquals( "new (Double, ...)", i, Parameter.create("Double", i, null).doubleValue(), 0.0); assertEquals( "new (Double, ...)", i, Parameter.create("Double", i, AbstractUnit.ONE).doubleValue(), 0.0); assertEquals( "new (Double, ...)", Math.toRadians(i), Parameter.create("Double", i, NonSI.DEGREE_ANGLE).doubleValue(SI.RADIAN), 1E-6); } }
Parameter<Double> param; param = new Parameter(DefaultParameterDescriptor.create("Range", 15.0, -30.0, +40.0, null)); assertEquals("intValue", 15, param.intValue()); assertEquals("doubleValue", 15, param.doubleValue(), 0.0); param.setValue(12.0); assertEquals("intValue", 12, param.intValue()); assertEquals("doubleValue", 12, param.doubleValue(), 0.0); try {
Parameter<Integer> param; param = new Parameter(DefaultParameterDescriptor.create("Range", 15, -30, +40)); assertEquals("intValue", 15, param.intValue()); assertEquals("doubleValue", 15, param.doubleValue(), 0.0); param.setValue(12); assertEquals("intValue", 12, param.intValue()); assertEquals("doubleValue", 12, param.doubleValue(), 0.0); try {
descriptor = parameter.getDescriptor(); assertNull("unit", parameter.getUnit()); assertEquals("intValue", 14, parameter.intValue()); assertEquals("doubleValue", 14, parameter.doubleValue(), 0); assertEquals("type", Integer.class, descriptor.getValueClass()); assertEquals("intValue", 3, parameter.intValue()); assertEquals("doubleValue", 3, parameter.doubleValue(), 0); assertEquals("doubleValue", 300, parameter.doubleValue(MetricPrefix.CENTI(SI.METRE)), 0);