View Javadoc
1   package org.djutils.cli;
2   
3   import static org.junit.Assert.assertEquals;
4   
5   import org.djunits.unit.AbsoluteTemperatureUnit;
6   import org.djunits.unit.AbsorbedDoseUnit;
7   import org.djunits.unit.AccelerationUnit;
8   import org.djunits.unit.AmountOfSubstanceUnit;
9   import org.djunits.unit.AngleUnit;
10  import org.djunits.unit.AngularAccelerationUnit;
11  import org.djunits.unit.AngularVelocityUnit;
12  import org.djunits.unit.AreaUnit;
13  import org.djunits.unit.CatalyticActivityUnit;
14  import org.djunits.unit.DensityUnit;
15  import org.djunits.unit.DimensionlessUnit;
16  import org.djunits.unit.DirectionUnit;
17  import org.djunits.unit.DurationUnit;
18  import org.djunits.unit.ElectricalCapacitanceUnit;
19  import org.djunits.unit.ElectricalChargeUnit;
20  import org.djunits.unit.ElectricalConductanceUnit;
21  import org.djunits.unit.ElectricalCurrentUnit;
22  import org.djunits.unit.ElectricalInductanceUnit;
23  import org.djunits.unit.ElectricalPotentialUnit;
24  import org.djunits.unit.ElectricalResistanceUnit;
25  import org.djunits.unit.EnergyUnit;
26  import org.djunits.unit.EquivalentDoseUnit;
27  import org.djunits.unit.FlowMassUnit;
28  import org.djunits.unit.FlowVolumeUnit;
29  import org.djunits.unit.ForceUnit;
30  import org.djunits.unit.FrequencyUnit;
31  import org.djunits.unit.IlluminanceUnit;
32  import org.djunits.unit.LengthUnit;
33  import org.djunits.unit.LinearDensityUnit;
34  import org.djunits.unit.LuminousFluxUnit;
35  import org.djunits.unit.LuminousIntensityUnit;
36  import org.djunits.unit.MagneticFluxDensityUnit;
37  import org.djunits.unit.MagneticFluxUnit;
38  import org.djunits.unit.MassUnit;
39  import org.djunits.unit.MomentumUnit;
40  import org.djunits.unit.PositionUnit;
41  import org.djunits.unit.PowerUnit;
42  import org.djunits.unit.PressureUnit;
43  import org.djunits.unit.RadioActivityUnit;
44  import org.djunits.unit.SolidAngleUnit;
45  import org.djunits.unit.SpeedUnit;
46  import org.djunits.unit.TemperatureUnit;
47  import org.djunits.unit.TimeUnit;
48  import org.djunits.unit.TorqueUnit;
49  import org.djunits.unit.VolumeUnit;
50  import org.djunits.value.vdouble.scalar.AbsoluteTemperature;
51  import org.djunits.value.vdouble.scalar.AbsorbedDose;
52  import org.djunits.value.vdouble.scalar.Acceleration;
53  import org.djunits.value.vdouble.scalar.AmountOfSubstance;
54  import org.djunits.value.vdouble.scalar.Angle;
55  import org.djunits.value.vdouble.scalar.AngularAcceleration;
56  import org.djunits.value.vdouble.scalar.AngularVelocity;
57  import org.djunits.value.vdouble.scalar.Area;
58  import org.djunits.value.vdouble.scalar.CatalyticActivity;
59  import org.djunits.value.vdouble.scalar.Density;
60  import org.djunits.value.vdouble.scalar.Dimensionless;
61  import org.djunits.value.vdouble.scalar.Direction;
62  import org.djunits.value.vdouble.scalar.Duration;
63  import org.djunits.value.vdouble.scalar.ElectricalCapacitance;
64  import org.djunits.value.vdouble.scalar.ElectricalCharge;
65  import org.djunits.value.vdouble.scalar.ElectricalConductance;
66  import org.djunits.value.vdouble.scalar.ElectricalCurrent;
67  import org.djunits.value.vdouble.scalar.ElectricalInductance;
68  import org.djunits.value.vdouble.scalar.ElectricalPotential;
69  import org.djunits.value.vdouble.scalar.ElectricalResistance;
70  import org.djunits.value.vdouble.scalar.Energy;
71  import org.djunits.value.vdouble.scalar.EquivalentDose;
72  import org.djunits.value.vdouble.scalar.FlowMass;
73  import org.djunits.value.vdouble.scalar.FlowVolume;
74  import org.djunits.value.vdouble.scalar.Force;
75  import org.djunits.value.vdouble.scalar.Frequency;
76  import org.djunits.value.vdouble.scalar.Illuminance;
77  import org.djunits.value.vdouble.scalar.Length;
78  import org.djunits.value.vdouble.scalar.LinearDensity;
79  import org.djunits.value.vdouble.scalar.LuminousFlux;
80  import org.djunits.value.vdouble.scalar.LuminousIntensity;
81  import org.djunits.value.vdouble.scalar.MagneticFlux;
82  import org.djunits.value.vdouble.scalar.MagneticFluxDensity;
83  import org.djunits.value.vdouble.scalar.Mass;
84  import org.djunits.value.vdouble.scalar.Momentum;
85  import org.djunits.value.vdouble.scalar.Position;
86  import org.djunits.value.vdouble.scalar.Power;
87  import org.djunits.value.vdouble.scalar.Pressure;
88  import org.djunits.value.vdouble.scalar.RadioActivity;
89  import org.djunits.value.vdouble.scalar.SolidAngle;
90  import org.djunits.value.vdouble.scalar.Speed;
91  import org.djunits.value.vdouble.scalar.Temperature;
92  import org.djunits.value.vdouble.scalar.Time;
93  import org.djunits.value.vdouble.scalar.Torque;
94  import org.djunits.value.vdouble.scalar.Volume;
95  import org.junit.Test;
96  
97  import picocli.CommandLine.Command;
98  import picocli.CommandLine.Option;
99  
100 /**
101  * Program to test the DJUNITS unit converters for CLI. <br>
102  * <br>
103  * Copyright (c) 2003-2018 Delft University of Technology, Jaffalaan 5, 2628 BX Delft, the Netherlands. All rights reserved. See
104  * for project information <a href="https://www.simulation.tudelft.nl/" target="_blank">www.simulation.tudelft.nl</a>. The
105  * source code and binary code of this software is proprietary information of Delft University of Technology.
106  * @author <a href="https://www.tudelft.nl/averbraeck" target="_blank">Alexander Verbraeck</a>
107  */
108 @SuppressWarnings("checkstyle:visibilitymodifier")
109 public class TestCLIUnitConverters
110 {
111     /** */
112     @Command(description = "Test program for CLI", name = "Program", mixinStandardHelpOptions = true, version = "1.0")
113     public static class Options
114     {
115         /** */
116         @Option(names = {"--absolutetemperature"}, description = "AbsoluteTemperature", defaultValue = "200.0K")
117         protected AbsoluteTemperature absolutetemperature;
118 
119         /** */
120         @Option(names = {"--absorbeddose"}, description = "AbsorbedDose", defaultValue = "200Gy")
121         protected AbsorbedDose absorbeddose;
122 
123         /** */
124         @Option(names = {"--acceleration"}, description = "Acceleration", defaultValue = "2.0m/s^2")
125         protected Acceleration acceleration;
126 
127         /** */
128         @Option(names = {"--amountofsubstance"}, description = "AmountOfSubstance", defaultValue = "200.0mol")
129         protected AmountOfSubstance amountofsubstance;
130 
131         /** */
132         @Option(names = {"--angle"}, description = "Angle", defaultValue = "2.0rad")
133         protected Angle angle;
134 
135         /** */
136         @Option(names = {"--angularacceleration"}, description = "AngularAcceleration", defaultValue = "2.0rad/s2")
137         protected AngularAcceleration angularacceleration;
138 
139         /** */
140         @Option(names = {"--angularvelocity"}, description = "AngularVelocity", defaultValue = "2.0rad/s")
141         protected AngularVelocity angularvelocity;
142 
143         /** */
144         @Option(names = {"--area"}, description = "Area", defaultValue = "2.0m^2")
145         protected Area area;
146 
147         /** */
148         @Option(names = {"--catalyticactivity"}, description = "CatalyticActivity", defaultValue = "2.0kat")
149         protected CatalyticActivity catalyticactivity;
150 
151         /** */
152         @Option(names = {"--density"}, description = "Density", defaultValue = "2.0kg/m^3")
153         protected Density density;
154 
155         /** */
156         @Option(names = {"--dimensionless"}, description = "Dimensionless", defaultValue = "2.0")
157         protected Dimensionless dimensionless;
158 
159         /** */
160         @Option(names = {"--direction"}, description = "Direction", defaultValue = "2.0rad(E)")
161         protected Direction direction;
162 
163         /** */
164         @Option(names = {"--duration"}, description = "Duration", defaultValue = "2.0s")
165         protected Duration duration;
166 
167         /** */
168         @Option(names = {"--electricalcapacitance"}, description = "ElectricalCapacitance", defaultValue = "2.0F")
169         protected ElectricalCapacitance electricalcapacitance;
170 
171         /** */
172         @Option(names = {"--electricalcharge"}, description = "ElectricalCharge", defaultValue = "2.0C")
173         protected ElectricalCharge electricalcharge;
174 
175         /** */
176         @Option(names = {"--electricalconductance"}, description = "ElectricalConductance", defaultValue = "2.0S")
177         protected ElectricalConductance electricalconductance;
178 
179         /** */
180         @Option(names = {"--electricalcurrent"}, description = "ElectricalCurrent", defaultValue = "2.0A")
181         protected ElectricalCurrent electricalcurrent;
182 
183         /** */
184         @Option(names = {"--electricalinductance"}, description = "ElectricalInductance", defaultValue = "2.0H")
185         protected ElectricalInductance electricalinductance;
186 
187         /** */
188         @Option(names = {"--electricalpotential"}, description = "ElectricalPotential", defaultValue = "2.0V")
189         protected ElectricalPotential electricalpotential;
190 
191         /** */
192         @Option(names = {"--electricalresistance"}, description = "ElectricalResistance", defaultValue = "2.0ohm")
193         protected ElectricalResistance electricalresistance;
194 
195         /** */
196         @Option(names = {"--energy"}, description = "Energy", defaultValue = "2.0J")
197         protected Energy energy;
198 
199         /** */
200         @Option(names = {"--equivalentdose"}, description = "EquivalentDose", defaultValue = "2.0Sv")
201         protected EquivalentDose equivalentdose;
202 
203         /** */
204         @Option(names = {"--flowmass"}, description = "FlowMass", defaultValue = "2.0kg/s")
205         protected FlowMass flowmass;
206 
207         /** */
208         @Option(names = {"--flowvolume"}, description = "FlowVolume", defaultValue = "2.0m^3/s")
209         protected FlowVolume flowvolume;
210 
211         /** */
212         @Option(names = {"--force"}, description = "Force", defaultValue = "2.0N")
213         protected Force force;
214 
215         /** */
216         @Option(names = {"--frequency"}, description = "Frequency", defaultValue = "2.0/s")
217         protected Frequency frequency;
218 
219         /** */
220         @Option(names = {"--illuminance"}, description = "Illuminance", defaultValue = "2.0lx")
221         protected Illuminance illuminance;
222 
223         /** */
224         @Option(names = {"--length"}, description = "Length", defaultValue = "2.0m")
225         protected Length length;
226 
227         /** */
228         @Option(names = {"--lineardensity"}, description = "LinearDensity", defaultValue = "2.0/m")
229         protected LinearDensity lineardensity;
230 
231         /** */
232         @Option(names = {"--luminousflux"}, description = "LuminousFlux", defaultValue = "2.0lm")
233         protected LuminousFlux luminousflux;
234 
235         /** */
236         @Option(names = {"--luminousintensity"}, description = "LuminousIntensity", defaultValue = "2.0cd")
237         protected LuminousIntensity luminousintensity;
238 
239         /** */
240         @Option(names = {"--magneticflux"}, description = "MagneticFlux", defaultValue = "2.0Wb")
241         protected MagneticFlux magneticflux;
242 
243         /** */
244         @Option(names = {"--magneticfluxdensity"}, description = "MagneticFluxDensity", defaultValue = "2.0T")
245         protected MagneticFluxDensity magneticfluxdensity;
246 
247         /** */
248         @Option(names = {"--mass"}, description = "Mass", defaultValue = "2.0kg")
249         protected Mass mass;
250 
251         /** */
252         @Option(names = {"--momentum"}, description = "Momentum", defaultValue = "2.0kgm/s")
253         protected Momentum momentum;
254 
255         /** */
256         @Option(names = {"--position"}, description = "Position", defaultValue = "2.0AU")
257         protected Position position;
258 
259         /** */
260         @Option(names = {"--power"}, description = "Power", defaultValue = "2.0W")
261         protected Power power;
262 
263         /** */
264         @Option(names = {"--pressure"}, description = "Pressure", defaultValue = "2.0Pa")
265         protected Pressure pressure;
266 
267         /** */
268         @Option(names = {"--radioactivity"}, description = "RadioActivity", defaultValue = "2.0Bq")
269         protected RadioActivity radioactivity;
270 
271         /** */
272         @Option(names = {"--solidangle"}, description = "SolidAngle", defaultValue = "2.0sr")
273         protected SolidAngle solidangle;
274 
275         /** */
276         @Option(names = {"--speed"}, description = "Speed", defaultValue = "2.0m/s")
277         protected Speed speed;
278 
279         /** */
280         @Option(names = {"--temperature"}, description = "Temperature", defaultValue = "2.0K")
281         protected Temperature temperature;
282 
283         /** */
284         @Option(names = {"--time"}, description = "Time", defaultValue = "2.0h")
285         protected Time time;
286 
287         /** */
288         @Option(names = {"--torque"}, description = "Torque", defaultValue = "2.0N.m")
289         protected Torque torque;
290 
291         /** */
292         @Option(names = {"--volume"}, description = "Volume", defaultValue = "2.0m^3")
293         protected Volume volume;
294     }
295 
296     /**
297      * Test the CliUtil methods.
298      * @throws CliException on error
299      * @throws IllegalAccessException on error
300      * @throws IllegalArgumentException on error
301      * @throws NoSuchFieldException on error
302      */
303     @Test
304     public void testCli() throws NoSuchFieldException, IllegalArgumentException, IllegalAccessException, CliException
305     {
306         String[] args;
307         Options options;
308 
309         args = new String[] {};
310         options = new Options();
311         CliUtil.execute(options, args);
312         assertEquals(new AbsoluteTemperature(200.0, AbsoluteTemperatureUnit.KELVIN), options.absolutetemperature);
313         args = new String[] {"--absolutetemperature", "100.0C"};
314         CliUtil.execute(options, args);
315         assertEquals(new AbsoluteTemperature(100.0, AbsoluteTemperatureUnit.DEGREE_CELSIUS), options.absolutetemperature);
316 
317         args = new String[] {};
318         options = new Options();
319         CliUtil.execute(options, args);
320         assertEquals(new AbsorbedDose(200.0, AbsorbedDoseUnit.GRAY), options.absorbeddose);
321         args = new String[] {"--absorbeddose", "100.0erg/g"};
322         CliUtil.execute(options, args);
323         assertEquals(new AbsorbedDose(100.0, AbsorbedDoseUnit.ERG_PER_GRAM), options.absorbeddose);
324 
325         args = new String[] {};
326         options = new Options();
327         CliUtil.execute(options, args);
328         assertEquals(new Acceleration(2.0, AccelerationUnit.METER_PER_SECOND_2), options.acceleration);
329         args = new String[] {"--acceleration", "1.0km/h^2"};
330         CliUtil.execute(options, args);
331         assertEquals(new Acceleration(1.0, AccelerationUnit.KM_PER_HOUR_2), options.acceleration);
332 
333         args = new String[] {};
334         options = new Options();
335         CliUtil.execute(options, args);
336         assertEquals(new AmountOfSubstance(200.0, AmountOfSubstanceUnit.MOLE), options.amountofsubstance);
337         args = new String[] {"--amountofsubstance", "10mmol"};
338         CliUtil.execute(options, args);
339         assertEquals(new AmountOfSubstance(10.0, AmountOfSubstanceUnit.MILLIMOLE), options.amountofsubstance);
340 
341         args = new String[] {};
342         options = new Options();
343         CliUtil.execute(options, args);
344         assertEquals(new Angle(2.0, AngleUnit.RADIAN), options.angle);
345         args = new String[] {"--angle", "10.0deg"};
346         CliUtil.execute(options, args);
347         assertEquals(new Angle(10.0, AngleUnit.DEGREE), options.angle);
348 
349         args = new String[] {};
350         options = new Options();
351         CliUtil.execute(options, args);
352         assertEquals(new AngularAcceleration(2.0, AngularAccelerationUnit.RADIAN_PER_SECOND_SQUARED),
353                 options.angularacceleration);
354         args = new String[] {"--angularacceleration", "10.0c\"/sec2"};
355         CliUtil.execute(options, args);
356         assertEquals(new AngularAcceleration(10.0, AngularAccelerationUnit.CENTESIMAL_ARCSECOND_PER_SECOND_SQUARED),
357                 options.angularacceleration);
358 
359         args = new String[] {};
360         options = new Options();
361         CliUtil.execute(options, args);
362         assertEquals(new AngularVelocity(2.0, AngularVelocityUnit.RADIAN_PER_SECOND), options.angularvelocity);
363         args = new String[] {"--angularvelocity", "10.0c\"/sec"};
364         CliUtil.execute(options, args);
365         assertEquals(new AngularVelocity(10.0, AngularVelocityUnit.CENTESIMAL_ARCSECOND_PER_SECOND), options.angularvelocity);
366 
367         args = new String[] {};
368         options = new Options();
369         CliUtil.execute(options, args);
370         assertEquals(new Area(2.0, AreaUnit.SQUARE_METER), options.area);
371         args = new String[] {"--area", "1.0ac"};
372         CliUtil.execute(options, args);
373         assertEquals(new Area(1.0, AreaUnit.ACRE), options.area);
374 
375         args = new String[] {};
376         options = new Options();
377         CliUtil.execute(options, args);
378         assertEquals(new CatalyticActivity(2.0, CatalyticActivityUnit.KATAL), options.catalyticactivity);
379         args = new String[] {"--catalyticactivity", "1.0mkat"};
380         CliUtil.execute(options, args);
381         assertEquals(new CatalyticActivity(1.0, CatalyticActivityUnit.MILLIKATAL), options.catalyticactivity);
382 
383         args = new String[] {};
384         options = new Options();
385         CliUtil.execute(options, args);
386         assertEquals(new Density(2.0, DensityUnit.KG_PER_METER_3), options.density);
387         args = new String[] {"--density", "1.0g/cm^3"};
388         CliUtil.execute(options, args);
389         assertEquals(new Density(1.0, DensityUnit.GRAM_PER_CENTIMETER_3), options.density);
390 
391         args = new String[] {};
392         options = new Options();
393         CliUtil.execute(options, args);
394         assertEquals(new Dimensionless(2.0, DimensionlessUnit.SI), options.dimensionless);
395         args = new String[] {"--dimensionless", "1.0"};
396         CliUtil.execute(options, args);
397         assertEquals(new Dimensionless(1.0, DimensionlessUnit.SI), options.dimensionless);
398 
399         args = new String[] {};
400         options = new Options();
401         CliUtil.execute(options, args);
402         assertEquals(new Direction(2.0, DirectionUnit.EAST_RADIAN), options.direction);
403         args = new String[] {"--direction", "1.0deg(N)"};
404         CliUtil.execute(options, args);
405         assertEquals(new Direction(1.0, DirectionUnit.NORTH_DEGREE), options.direction);
406 
407         args = new String[] {};
408         options = new Options();
409         CliUtil.execute(options, args);
410         assertEquals(new Duration(2.0, DurationUnit.SECOND), options.duration);
411         args = new String[] {"--duration", "1.0day"};
412         CliUtil.execute(options, args);
413         assertEquals(new Duration(1.0, DurationUnit.DAY), options.duration);
414 
415         args = new String[] {};
416         options = new Options();
417         CliUtil.execute(options, args);
418         assertEquals(new ElectricalCapacitance(2.0, ElectricalCapacitanceUnit.FARAD), options.electricalcapacitance);
419         args = new String[] {"--electricalcapacitance", "1.0uF"};
420         CliUtil.execute(options, args);
421         assertEquals(new ElectricalCapacitance(1.0, ElectricalCapacitanceUnit.MICROFARAD), options.electricalcapacitance);
422 
423         args = new String[] {};
424         options = new Options();
425         CliUtil.execute(options, args);
426         assertEquals(new ElectricalCharge(2.0, ElectricalChargeUnit.COULOMB), options.electricalcharge);
427         args = new String[] {"--electricalcharge", "1.0mAh"};
428         CliUtil.execute(options, args);
429         assertEquals(new ElectricalCharge(1.0, ElectricalChargeUnit.MILLIAMPERE_HOUR), options.electricalcharge);
430 
431         args = new String[] {};
432         options = new Options();
433         CliUtil.execute(options, args);
434         assertEquals(new ElectricalConductance(2.0, ElectricalConductanceUnit.SIEMENS), options.electricalconductance);
435         args = new String[] {"--electricalconductance", "1.0mS"};
436         CliUtil.execute(options, args);
437         assertEquals(new ElectricalConductance(1.0, ElectricalConductanceUnit.MILLISIEMENS), options.electricalconductance);
438 
439         args = new String[] {};
440         options = new Options();
441         CliUtil.execute(options, args);
442         assertEquals(new ElectricalCurrent(2.0, ElectricalCurrentUnit.AMPERE), options.electricalcurrent);
443         args = new String[] {"--electricalcurrent", "1.0statA"};
444         CliUtil.execute(options, args);
445         assertEquals(new ElectricalCurrent(1.0, ElectricalCurrentUnit.STATAMPERE), options.electricalcurrent);
446 
447         args = new String[] {};
448         options = new Options();
449         CliUtil.execute(options, args);
450         assertEquals(new ElectricalInductance(2.0, ElectricalInductanceUnit.HENRY), options.electricalinductance);
451         args = new String[] {"--electricalinductance", "1.0mH"};
452         CliUtil.execute(options, args);
453         assertEquals(new ElectricalInductance(1.0, ElectricalInductanceUnit.MILLIHENRY), options.electricalinductance);
454 
455         args = new String[] {};
456         options = new Options();
457         CliUtil.execute(options, args);
458         assertEquals(new ElectricalPotential(2.0, ElectricalPotentialUnit.VOLT), options.electricalpotential);
459         args = new String[] {"--electricalpotential", "1.0abV"};
460         CliUtil.execute(options, args);
461         assertEquals(new ElectricalPotential(1.0, ElectricalPotentialUnit.ABVOLT), options.electricalpotential);
462 
463         args = new String[] {};
464         options = new Options();
465         CliUtil.execute(options, args);
466         assertEquals(new ElectricalResistance(2.0, ElectricalResistanceUnit.OHM), options.electricalresistance);
467         args = new String[] {"--electricalresistance", "1.0stohm"};
468         CliUtil.execute(options, args);
469         assertEquals(new ElectricalResistance(1.0, ElectricalResistanceUnit.STATOHM), options.electricalresistance);
470 
471         args = new String[] {};
472         options = new Options();
473         CliUtil.execute(options, args);
474         assertEquals(new Energy(2.0, EnergyUnit.JOULE), options.energy);
475         args = new String[] {"--energy", "1.0kWh"};
476         CliUtil.execute(options, args);
477         assertEquals(new Energy(1.0, EnergyUnit.KILOWATT_HOUR), options.energy);
478 
479         args = new String[] {};
480         options = new Options();
481         CliUtil.execute(options, args);
482         assertEquals(new EquivalentDose(2.0, EquivalentDoseUnit.SIEVERT), options.equivalentdose);
483         args = new String[] {"--equivalentdose", "1.0rem"};
484         CliUtil.execute(options, args);
485         assertEquals(new EquivalentDose(1.0, EquivalentDoseUnit.REM), options.equivalentdose);
486 
487         args = new String[] {};
488         options = new Options();
489         CliUtil.execute(options, args);
490         assertEquals(new FlowMass(2.0, FlowMassUnit.KILOGRAM_PER_SECOND), options.flowmass);
491         args = new String[] {"--flowmass", "1.0lb/s"};
492         CliUtil.execute(options, args);
493         assertEquals(new FlowMass(1.0, FlowMassUnit.POUND_PER_SECOND), options.flowmass);
494 
495         args = new String[] {};
496         options = new Options();
497         CliUtil.execute(options, args);
498         assertEquals(new FlowVolume(2.0, FlowVolumeUnit.CUBIC_METER_PER_SECOND), options.flowvolume);
499         args = new String[] {"--flowvolume", "1.0gal(US)/day"};
500         CliUtil.execute(options, args);
501         assertEquals(new FlowVolume(1.0, FlowVolumeUnit.GALLON_US_PER_DAY), options.flowvolume);
502 
503         args = new String[] {};
504         options = new Options();
505         CliUtil.execute(options, args);
506         assertEquals(new Force(2.0, ForceUnit.NEWTON), options.force);
507         args = new String[] {"--force", "1.0kgf"};
508         CliUtil.execute(options, args);
509         assertEquals(new Force(1.0, ForceUnit.KILOGRAM_FORCE), options.force);
510 
511         args = new String[] {};
512         options = new Options();
513         CliUtil.execute(options, args);
514         assertEquals(new Frequency(2.0, FrequencyUnit.PER_SECOND), options.frequency);
515         args = new String[] {"--frequency", "1.0kHz"};
516         CliUtil.execute(options, args);
517         assertEquals(new Frequency(1.0, FrequencyUnit.KILOHERTZ), options.frequency);
518 
519         args = new String[] {};
520         options = new Options();
521         CliUtil.execute(options, args);
522         assertEquals(new Illuminance(2.0, IlluminanceUnit.LUX), options.illuminance);
523         args = new String[] {"--illuminance", "1.0nx"};
524         CliUtil.execute(options, args);
525         assertEquals(new Illuminance(1.0, IlluminanceUnit.NOX), options.illuminance);
526 
527         args = new String[] {};
528         options = new Options();
529         CliUtil.execute(options, args);
530         assertEquals(new Length(2.0, LengthUnit.METER), options.length);
531         args = new String[] {"--length", "1.0in"};
532         CliUtil.execute(options, args);
533         assertEquals(new Length(1.0, LengthUnit.INCH), options.length);
534 
535         args = new String[] {};
536         options = new Options();
537         CliUtil.execute(options, args);
538         assertEquals(new LinearDensity(2.0, LinearDensityUnit.PER_METER), options.lineardensity);
539         args = new String[] {"--lineardensity", "1.0/yd"};
540         CliUtil.execute(options, args);
541         assertEquals(new LinearDensity(1.0, LinearDensityUnit.PER_YARD), options.lineardensity);
542 
543         args = new String[] {};
544         options = new Options();
545         CliUtil.execute(options, args);
546         assertEquals(new LuminousFlux(2.0, LuminousFluxUnit.LUMEN), options.luminousflux);
547         args = new String[] {"--luminousflux", "1.0srcd"};
548         CliUtil.execute(options, args);
549         assertEquals(new LuminousFlux(1.0, LuminousFluxUnit.LUMEN), options.luminousflux);
550 
551         args = new String[] {};
552         options = new Options();
553         CliUtil.execute(options, args);
554         assertEquals(new LuminousIntensity(2.0, LuminousIntensityUnit.CANDELA), options.luminousintensity);
555         args = new String[] {"--luminousintensity", "1.0cd"};
556         CliUtil.execute(options, args);
557         assertEquals(new LuminousIntensity(1.0, LuminousIntensityUnit.SI), options.luminousintensity);
558 
559         args = new String[] {};
560         options = new Options();
561         CliUtil.execute(options, args);
562         assertEquals(new MagneticFlux(2.0, MagneticFluxUnit.WEBER), options.magneticflux);
563         args = new String[] {"--magneticflux", "1.0Mx"};
564         CliUtil.execute(options, args);
565         assertEquals(new MagneticFlux(1.0, MagneticFluxUnit.MAXWELL), options.magneticflux);
566 
567         args = new String[] {};
568         options = new Options();
569         CliUtil.execute(options, args);
570         assertEquals(new MagneticFluxDensity(2.0, MagneticFluxDensityUnit.TESLA), options.magneticfluxdensity);
571         args = new String[] {"--magneticfluxdensity", "1.0G"};
572         CliUtil.execute(options, args);
573         assertEquals(new MagneticFluxDensity(1.0, MagneticFluxDensityUnit.GAUSS), options.magneticfluxdensity);
574 
575         args = new String[] {};
576         options = new Options();
577         CliUtil.execute(options, args);
578         assertEquals(new Mass(2.0, MassUnit.KILOGRAM), options.mass);
579         args = new String[] {"--mass", "1.0GeV"};
580         CliUtil.execute(options, args);
581         assertEquals(new Mass(1.0, MassUnit.GIGAELECTRONVOLT), options.mass);
582 
583         args = new String[] {};
584         options = new Options();
585         CliUtil.execute(options, args);
586         assertEquals(new Momentum(2.0, MomentumUnit.SI), options.momentum);
587         args = new String[] {"--momentum", "1.0kgm/sec"};
588         CliUtil.execute(options, args);
589         assertEquals(new Momentum(1.0, MomentumUnit.KILOGRAM_METER_PER_SECOND), options.momentum);
590 
591         args = new String[] {};
592         options = new Options();
593         CliUtil.execute(options, args);
594         assertEquals(new Position(2.0, PositionUnit.ASTRONOMICAL_UNIT), options.position);
595         args = new String[] {"--position", "1.0dm"};
596         CliUtil.execute(options, args);
597         assertEquals(new Position(1.0, PositionUnit.DECIMETER), options.position);
598 
599         args = new String[] {};
600         options = new Options();
601         CliUtil.execute(options, args);
602         assertEquals(new Power(2.0, PowerUnit.WATT), options.power);
603         args = new String[] {"--power", "1.0ft.lbf/h"};
604         CliUtil.execute(options, args);
605         assertEquals(new Power(1.0, PowerUnit.FOOT_POUND_FORCE_PER_HOUR), options.power);
606 
607         args = new String[] {};
608         options = new Options();
609         CliUtil.execute(options, args);
610         assertEquals(new Pressure(2.0, PressureUnit.PASCAL), options.pressure);
611         args = new String[] {"--pressure", "1.0mmHg"};
612         CliUtil.execute(options, args);
613         assertEquals(new Pressure(1.0, PressureUnit.MILLIMETER_MERCURY), options.pressure);
614 
615         args = new String[] {};
616         options = new Options();
617         CliUtil.execute(options, args);
618         assertEquals(new RadioActivity(2.0, RadioActivityUnit.BECQUEREL), options.radioactivity);
619         args = new String[] {"--radioactivity", "1.0Ci"};
620         CliUtil.execute(options, args);
621         assertEquals(new RadioActivity(1.0, RadioActivityUnit.CURIE), options.radioactivity);
622 
623         args = new String[] {};
624         options = new Options();
625         CliUtil.execute(options, args);
626         assertEquals(new SolidAngle(2.0, SolidAngleUnit.STERADIAN), options.solidangle);
627         args = new String[] {"--solidangle", "1.0sq.deg"};
628         CliUtil.execute(options, args);
629         assertEquals(new SolidAngle(1.0, SolidAngleUnit.SQUARE_DEGREE), options.solidangle);
630 
631         args = new String[] {};
632         options = new Options();
633         CliUtil.execute(options, args);
634         assertEquals(new Speed(2.0, SpeedUnit.METER_PER_SECOND), options.speed);
635         args = new String[] {"--speed", "1.0mi/h"};
636         CliUtil.execute(options, args);
637         assertEquals(new Speed(1.0, SpeedUnit.MILE_PER_HOUR), options.speed);
638 
639         args = new String[] {};
640         options = new Options();
641         CliUtil.execute(options, args);
642         assertEquals(new Temperature(2.0, TemperatureUnit.KELVIN), options.temperature);
643         args = new String[] {"--temperature", "1.0degC"};
644         CliUtil.execute(options, args);
645         assertEquals(new Temperature(1.0, TemperatureUnit.DEGREE_CELSIUS), options.temperature);
646 
647         args = new String[] {};
648         options = new Options();
649         CliUtil.execute(options, args);
650         assertEquals(new Time(2.0, TimeUnit.BASE_HOUR), options.time);
651         args = new String[] {"--time", "1.0day"};
652         CliUtil.execute(options, args);
653         assertEquals(new Time(1.0, TimeUnit.EPOCH_DAY), options.time);
654 
655         args = new String[] {};
656         options = new Options();
657         CliUtil.execute(options, args);
658         assertEquals(new Torque(2.0, TorqueUnit.NEWTON_METER), options.torque);
659         args = new String[] {"--torque", "1.0lbf.ft"};
660         CliUtil.execute(options, args);
661         assertEquals(new Torque(1.0, TorqueUnit.POUND_FOOT), options.torque);
662 
663         args = new String[] {};
664         options = new Options();
665         CliUtil.execute(options, args);
666         assertEquals(new Volume(2.0, VolumeUnit.CUBIC_METER), options.volume);
667         args = new String[] {"--volume", "1.0L"};
668         CliUtil.execute(options, args);
669         assertEquals(new Volume(1.0, VolumeUnit.LITER), options.volume);
670 
671     }
672 
673 }