FunctionalTests: UcumFunctionalTests.xml

File UcumFunctionalTests.xml, 20.5 KB (added by grahame@…, 2 years ago)

Ucum Functional Tests

Line 
1<?xml version="1.0" encoding="UTF-8"?> 
2<ucumTests>
3<!--
4  Ucum Functional Tests.
5 
6  This file is maintained by Grahame Grieve (grahameg@gmail.com).
7  Contributions/Corrections are welcome, and are best made through
8  the trac system at unitsofmeasure.org
9 
10  Conformance:
11    You may declare conformance to these UCUM functional tests if
12        your implementation accepts this file as an input, and passes
13        all the test cases below. You should always quote the most
14        recent date from the history entries below when claiming
15        conformance.
16       
17        You may qualify the conformance to particular kinds of cases if your
18        functionality does not cover all the tests.
19       
20        Note that conformance to these tests does not equate to
21        conformance to UCUM itself - though one could reasonably
22        claim to be compliant with UCUM if one is conformant to these
23        tests.
24
25  This file is copyright © 2008 - 2009 Grahame Grieve and other
26  contributers:
27    * Gunther Schadow
28        * Lloyd Mackenzie
29 
30  This source is licensed for public use under the Eclipse Public License
31  (http://www.eclipse.org/legal/epl-v10.html).
32 
33-->
34  <history>
35     <entry date="31-May 2010" author="gdg">updated with fixes to a couple of original conversion tests (Thanks to Christof Gessner). Extended the conversion tests considerably - should be easier to track down conversion issues</entry>
36     <entry date="10-Feb 2009" author="gdg">First created. Ucum validation Tests, display name generation tests, conversion tests, and multiplication tests</entry>
37  </history>
38  <!-- Note: all tests use case sensitive codes -->
39  <validation>
40    <!--
41          These tests check that ucum validation code is working correctly.
42          Each case has a unit, and whether the specified unit is valid or not
43          No particular error is specified, but a hint is provided for why the
44          unit is not valid
45         -->
46    <case id="1-101" unit="m" valid="true"/>
47        <case id="1-102" unit="m/" valid="false" reason="/ is not followed by a term"/>
48        <case id="1-103" unit="" valid="true"/>
49        <case id="1-104" unit="/m" valid="true"/>
50        <case id="1-105" unit="10*3/ul" valid="true"/>
51        <case id="1-106" unit="10*-3/ul" valid="true"/>
52        <case id="1-107" unit="10*+3/ul" valid="true"/>
53        <case id="1-108" unit="10+3/ul" valid="false" reason="10 is not a valid unit"/>
54        <case id="1-109" unit="m" valid="true"/>
55        <case id="1-110" unit="m[H2O]" valid="true"/>
56        <case id="1-111" unit="10*23" valid="true"/>
57        <case id="1-112" unit="rad2" valid="true"/>
58        <case id="1-113" unit="m3.kg-1.s-2" valid="true"/>
59        <case id="1-114" unit="4.[pi].10*-7.N/A2" valid="true"/>
60        <!-- test that the parser supports both {} inserts, and unicode characters too, while we're at it -->
61        <case id="1-115" unit="rad2{錠}" valid="true"/>
62        <case id="1-116" unit="{錠}rad2{錠}" valid="true"/>               
63        <case id="1-117" unit="1{錠}" valid="true"/>
64        <case id="1-118" unit="{錠}1" valid="true"/>
65        <case id="1-119" unit="{錠}" valid="true"/>
66        <case id="1-120" unit="%" valid="true"/>
67       
68        <!--
69          These codes are taken from the first draft of a proposed Canadian UCUM subset.
70          (the subset was subsequently corrected after being tested) -->
71         
72        <case id="1-121" unit="[cup_us]" valid="true"/>
73        <case id="1-122" unit="[foz_br]" valid="true"/>
74        <case id="1-123" unit="[ft_i]" valid="true"/>
75        <case id="1-124" unit="[in_i]" valid="true"/>
76        <case id="1-125" unit="[yd_i]" valid="true"/>
77        <case id="1-126" unit="[gal_br]" valid="true"/>
78        <case id="1-127" unit="[lb_av]" valid="true"/>
79        <case id="1-128" unit="[oz_av]" valid="true"/>
80        <case id="1-129" unit="[pt_br]" valid="true"/>
81        <case id="1-130" unit="[qt_br]" valid="true"/>
82        <case id="1-131" unit="[sft_i]" valid="true"/>
83        <case id="1-132" unit="[sin_i]" valid="true"/>
84        <case id="1-133" unit="[syd_i]" valid="true"/>
85        <case id="1-134" unit="[tbs_us]" valid="true"/>
86        <case id="1-135" unit="[tsp_us]" valid="true"/>
87        <case id="1-136" unit="1/d" valid="true"/>
88        <case id="1-137" unit="1/min" valid="true"/>
89        <case id="1-138" unit="a" valid="true"/>
90        <case id="1-139" unit="cm" valid="true"/>
91        <case id="1-140" unit="cm2" valid="true"/>
92        <case id="1-141" unit="cm3" valid="true"/>
93        <case id="1-142" unit="d" valid="true"/>
94        <case id="1-143" unit="dg" valid="true"/>
95        <case id="1-144" unit="dl" valid="true"/>
96        <case id="1-145" unit="g" valid="true"/>
97        <case id="1-146" unit="g/d" valid="true"/>
98        <case id="1-147" unit="g/l" valid="true"/>
99        <case id="1-148" unit="h" valid="true"/>
100        <case id="1-149" unit="iU" valid="false" reason="iU needs [] around it"/>
101        <case id="1-150" unit="kg" valid="true"/>
102        <case id="1-151" unit="l" valid="true"/>
103        <case id="1-152" unit="m" valid="true"/>
104        <case id="1-153" unit="mm" valid="true"/>
105        <case id="1-154" unit="m2" valid="true"/>
106        <case id="1-155" unit="meq" valid="true"/>
107        <case id="1-156" unit="mg" valid="true"/>
108        <case id="1-157" unit="mg" valid="true"/>
109        <case id="1-158" unit="mg/d" valid="true"/>
110        <case id="1-159" unit="min" valid="true"/>
111        <case id="1-160" unit="ml" valid="true"/>
112        <case id="1-161" unit="ml/s" valid="true"/>
113        <case id="1-162" unit="mm[Hg]" valid="true"/>
114        <case id="1-163" unit="mm2" valid="true"/>
115        <case id="1-164" unit="mm3" valid="true"/>
116        <case id="1-165" unit="mmol" valid="true"/>
117        <case id="1-166" unit="mmol/l" valid="true"/>
118        <case id="1-167" unit="mo" valid="true"/>
119        <case id="1-168" unit="mol" valid="true"/>
120        <case id="1-169" unit="ms" valid="true"/>
121        <case id="1-170" unit="mU" valid="true"/>
122        <case id="1-171" unit="ng" valid="true"/>
123        <case id="1-172" unit="ng" valid="true"/>
124        <case id="1-173" unit="nl" valid="true"/>
125        <case id="1-174" unit="nl" valid="true"/>
126        <case id="1-175" unit="pg/ml" valid="true"/>
127        <case id="1-176" unit="s" valid="true"/>
128        <case id="1-177" unit="U" valid="true"/>
129        <case id="1-178" unit="U/l" valid="true"/>
130        <case id="1-179" unit="ug" valid="true"/>
131        <case id="1-180" unit="ug/min" valid="true"/>
132        <case id="1-181" unit="ul" valid="true"/>
133        <case id="1-182" unit="umol" valid="true"/>
134        <case id="1-183" unit="umol/l" valid="true"/>
135        <case id="1-184" unit="wk" valid="true"/>
136        <case id="1-185" unit="%" valid="true"/>
137        <case id="1-186" unit="[cup_us]" valid="true"/>
138        <case id="1-187" unit="[foz_br]" valid="true"/>
139        <case id="1-188" unit="[gal_br]" valid="true"/>
140        <case id="1-189" unit="[sft_i]" valid="true"/>
141        <case id="1-190" unit="[sin_i]" valid="true"/>
142        <case id="1-191" unit="[lb_av]" valid="true"/>
143        <case id="1-192" unit="[oz_av]" valid="true"/>
144        <case id="1-193" unit="[pt_br]" valid="true"/>
145        <case id="1-194" unit="[qt_br]" valid="true"/>
146        <case id="1-195" unit="[tbs_us]" valid="true"/>
147        <case id="1-196" unit="[tsp_us]" valid="true"/>
148        <case id="1-197" unit="[syd_i]" valid="true"/>
149        <case id="1-198" unit="cm2" valid="true"/>
150        <case id="1-199" unit="cm3" valid="true"/>
151        <case id="1-200" unit="g" valid="true"/>
152        <case id="1-201" unit="kg" valid="true"/>
153        <case id="1-202" unit="l" valid="true"/>
154        <case id="1-203" unit="m2" valid="true"/>
155        <case id="1-204" unit="meq" valid="true"/>
156        <case id="1-205" unit="mg" valid="true"/>
157        <case id="1-206" unit="ml" valid="true"/>
158        <case id="1-207" unit="mm2" valid="true"/>
159        <case id="1-208" unit="mm3" valid="true"/>
160        <case id="1-209" unit="mmol" valid="true"/>
161        <case id="1-210" unit="molv" valid="false" reason="molv is not a valid unit"/>
162        <case id="1-211" unit="mU" valid="true"/>
163        <case id="1-212" unit="ng" valid="true"/>
164        <case id="1-213" unit="nl" valid="true"/>
165        <case id="1-214" unit="U" valid="true"/>
166        <case id="1-215" unit="ug" valid="true"/>
167        <case id="1-216" unit="ul" valid="true"/>
168        <case id="1-217" unit="umol" valid="true"/>
169        <case id="1-218" unit="a" valid="true"/>
170        <case id="1-219" unit="d" valid="true"/>
171        <case id="1-220" unit="h" valid="true"/>
172        <case id="1-221" unit="min" valid="true"/>
173        <case id="1-222" unit="mo" valid="true"/>
174        <case id="1-223" unit="s" valid="true"/>
175        <case id="1-224" unit="wk" valid="true"/>
176        <case id="1-225" unit="[ft_i]" valid="true"/>
177        <case id="1-226" unit="[in_i]" valid="true"/>
178        <case id="1-227" unit="[lb_av]" valid="true"/>
179        <case id="1-228" unit="[oz_av]" valid="true"/>
180        <case id="1-229" unit="[yd_i]" valid="true"/>
181        <case id="1-230" unit="cm" valid="true"/>
182        <case id="1-231" unit="g" valid="true"/>
183        <case id="1-232" unit="kg" valid="true"/>
184        <case id="1-233" unit="m" valid="true"/>
185        <case id="1-234" unit="mm" valid="true"/>
186        <case id="1-235" unit="[mi_us]" valid="true"/>
187        <case id="1-236" unit="[yd_i]" valid="true"/>
188        <case id="1-237" unit="deg" valid="true"/>
189        <case id="1-238" unit="km" valid="true"/>
190        <case id="1-239" unit="m" valid="true"/>
191        <case id="1-240" unit="%" valid="true"/>
192        <case id="1-241" unit="/[HPF]" valid="true"/>
193        <case id="1-242" unit="/[LPF]" valid="true"/>
194        <case id="1-243" unit="/L" valid="true"/>
195        <case id="1-244" unit="/mL" valid="true"/>
196        <case id="1-245" unit="/mmol" valid="true"/>
197        <case id="1-246" unit="[APL'U]" valid="true"/>
198        <case id="1-247" unit="[BETH'U]" valid="false" reason="not a valid unit"/>
199        <case id="1-248" unit="[GPL'U]" valid="true"/>
200        <case id="1-249" unit="[IU]" valid="false" reason="not a valid unit (iU)"/>
201        <case id="1-250" unit="[IU]/d" valid="false" reason="not a valid unit (iU)"/>
202        <case id="1-251" unit="[IU]/L" valid="false" reason="not a valid unit (iU)"/>
203        <case id="1-252" unit="[IU]/mL" valid="false" reason="not a valid unit (iU)"/>
204        <case id="1-253" unit="[MPL'U]" valid="true"/>
205        <case id="1-254" unit="10*12/L" valid="true"/>
206        <case id="1-255" unit="10*6/L" valid="true"/>
207        <case id="1-256" unit="10*9/L" valid="true"/>
208        <case id="1-257" unit="Cel" valid="true"/>
209        <case id="1-258" unit="cm" valid="true"/>
210        <case id="1-259" unit="cm/s" valid="true"/>
211        <case id="1-260" unit="fL" valid="true"/>
212        <case id="1-261" unit="fmol/L" valid="true"/>
213        <case id="1-262" unit="g" valid="true"/>
214        <case id="1-263" unit="g/12h" valid="false" reason="not a valid unit (12h - should be 12.h)"/>
215        <case id="1-264" unit="g/48h" valid="false" reason="not a valid unit (48h)"/>
216        <case id="1-265" unit="g/4h" valid="false" reason="not a valid unit (4h)"/>
217        <case id="1-266" unit="g/6h" valid="false" reason="not a valid unit (6h)"/>
218        <case id="1-267" unit="g/72h" valid="false" reason="not a valid unit (72h)"/>
219        <case id="1-268" unit="g/d" valid="true"/>
220        <case id="1-269" unit="g/g" valid="true"/>
221        <case id="1-270" unit="g/L" valid="true"/>
222        <case id="1-271" unit="h" valid="true"/>
223        <case id="1-272" unit="km" valid="true"/>
224        <case id="1-273" unit="kU/L" valid="true"/>
225        <case id="1-274" unit="L/L" valid="true"/>
226        <case id="1-275" unit="m[IU]/L" valid="false" reason="not a valid unit (iU)"/>
227        <case id="1-276" unit="mg" valid="true"/>
228        <case id="1-277" unit="mg/12h" valid="false" reason="not a valid unit (12h)"/>
229        <case id="1-278" unit="mg/d" valid="true"/>
230        <case id="1-279" unit="mg/g" valid="true"/>
231        <case id="1-280" unit="mg/L" valid="true"/>
232        <case id="1-281" unit="mg/mg" valid="true"/>
233        <case id="1-282" unit="mg/mL" valid="true"/>
234        <case id="1-283" unit="min" valid="true"/>
235        <case id="1-284" unit="mL" valid="true"/>
236        <case id="1-285" unit="mL/10h" valid="false" reason="not a valid unit (10h)"/>
237        <case id="1-286" unit="mL/12h" valid="false" reason="not a valid unit (12h)"/>
238        <case id="1-287" unit="mL/2h" valid="false" reason="not a valid unit (2h)"/>
239        <case id="1-288" unit="mL/4h" valid="false" reason="not a valid unit (4h)"/>
240        <case id="1-289" unit="mL/5h" valid="false" reason="not a valid unit (5h)"/>
241        <case id="1-290" unit="mL/6h" valid="false" reason="not a valid unit (6h)"/>
242        <case id="1-291" unit="mL/72h" valid="false" reason="not a valid unit (72h)"/>
243        <case id="1-292" unit="mL/8h" valid="false" reason="not a valid unit (8h)"/>
244        <case id="1-293" unit="mL/d" valid="true"/>
245        <case id="1-294" unit="mL/min" valid="true"/>
246        <case id="1-295" unit="mm" valid="true"/>
247        <case id="1-296" unit="mm/h" valid="true"/>
248        <case id="1-297" unit="mm[Hg]" valid="true"/>
249        <case id="1-298" unit="mmol" valid="true"/>
250        <case id="1-299" unit="mmol/12h" valid="false" reason="not a valid unit (12h)"/>
251        <case id="1-300" unit="mmol/5h" valid="false" reason="not a valid unit (5h)"/>
252        <case id="1-301" unit="mmol/6h" valid="false" reason="not a valid unit (6h)"/>
253        <case id="1-302" unit="mmol/d" valid="true"/>
254        <case id="1-303" unit="mmol/g" valid="true"/>
255        <case id="1-304" unit="mmol/kg" valid="true"/>
256        <case id="1-305" unit="mmol/kg[H20]" valid="false" reason="not a valid unit (kg[H20])"/>
257        <case id="1-306" unit="mmol/L" valid="true"/>
258        <case id="1-307" unit="mmol/mmol" valid="true"/>
259        <case id="1-308" unit="mU/L" valid="true"/>
260        <case id="1-309" unit="ng/d" valid="true"/>
261        <case id="1-310" unit="ng/g" valid="true"/>
262        <case id="1-311" unit="ng/L" valid="true"/>
263        <case id="1-312" unit="ng/mL" valid="true"/>
264        <case id="1-313" unit="nmol/d" valid="true"/>
265        <case id="1-314" unit="nmol/g" valid="true"/>
266        <case id="1-315" unit="nmol/h/mL" valid="true"/>
267        <case id="1-316" unit="nmol/L" valid="true"/>
268        <case id="1-317" unit="nmol/mmol" valid="true"/>
269        <case id="1-318" unit="nmol/nmol" valid="true"/>
270        <case id="1-319" unit="pg" valid="true"/>
271        <case id="1-320" unit="pg/mL" valid="true"/>
272        <case id="1-321" unit="pmol/d" valid="true"/>
273        <case id="1-322" unit="pmol/g" valid="true"/>
274        <case id="1-323" unit="pmol/h/mg" valid="true"/>
275        <case id="1-324" unit="pmol/h/mL" valid="true"/>
276        <case id="1-325" unit="pmol/L" valid="true"/>
277        <case id="1-326" unit="pmol/mmol" valid="true"/>
278        <case id="1-327" unit="s" valid="true"/>
279        <case id="1-328" unit="U" valid="true"/>
280        <case id="1-329" unit="U/12h" valid="false" reason="not a valid unit (12h)"/>
281        <case id="1-330" unit="U/1h" valid="false" reason="not a valid unit (1h)"/>
282        <case id="1-331" unit="U/2h" valid="false" reason="not a valid unit (2h)"/>
283        <case id="1-332" unit="U/d" valid="true"/>
284        <case id="1-333" unit="U/g" valid="true"/>
285        <case id="1-334" unit="U/kg" valid="true"/>
286        <case id="1-335" unit="U/L" valid="true"/>
287        <case id="1-336" unit="U/mL" valid="true"/>
288        <case id="1-337" unit="u[IU]/mL" valid="false" reason="not a valid unit (iU)"/>
289        <case id="1-338" unit="ug" valid="true"/>
290        <case id="1-339" unit="ug/d" valid="true"/>
291        <case id="1-340" unit="ug/g" valid="true"/>
292        <case id="1-341" unit="ug/L" valid="true"/>
293        <case id="1-342" unit="ug/mL" valid="true"/>
294        <case id="1-343" unit="um/s" valid="true"/>
295        <case id="1-344" unit="umol" valid="true"/>
296        <case id="1-345" unit="umol/2.h" valid="true"/>
297        <case id="1-346" unit="umol/d" valid="true"/>
298        <case id="1-347" unit="umol/g" valid="true"/>
299        <case id="1-348" unit="umol/L" valid="true"/>
300        <case id="1-349" unit="umol/mmol" valid="true"/>
301        <case id="1-350" unit="umol/umol" valid="true"/>
302        <case id="1-351" unit="wk" valid="true"/>
303  </validation>
304 
305  <displayNameGeneration>
306    <!--
307          This is a somewhat trivial concept, but here to encourage standard practice
308          where it matters - the ability to take a code and produce a (slightly) more
309          human readable long form (might correspond to the HL7 v3 / ISO data types
310          concept of display name)
311        -->
312    <case id="2-101" unit="" display="(unity)"/>
313        <case id="2-102" unit="m" display="(meter)"/>
314        <case id="2-103" unit="mm" display="(millimeter)"/>
315        <case id="2-104" unit="m[H2O]" display="(meter of water column)"/>
316        <case id="2-105" unit="10*23" display="(the number ten for arbitrary powers ^ 23)"/>
317        <case id="2-106" unit="rad2" display="(radian ^ 2)"/>
318        <case id="2-107" unit="m3.kg-1.s-2" display="(meter ^ 3) * (kilogram ^ -1) * (second ^ -2)"/>
319        <case id="2-108" unit="4.[pi].10*-7.N/A2" display="4 * (the number pi) * (the number ten for arbitrary powers ^ -7) * (Newton) / (Ampère ^ 2)"/>
320  </displayNameGeneration>             
321
322 
323  <conversion>
324    <!--
325          Conversion Tests
326          given value/srcUnit, what is the value in dstUnit?
327         
328          Note that we don't check directly what the canonical unit is. In fact,
329          no particular form is actually defined for UCUM - it's up the implementor
330          to define their own. However these tests check that the chosen canonical
331          form is working correctly as they work, since it's required to perform
332          these conversions
333         
334          note that the outcome is also not necessarily fixed to the given representation.
335          for instance, 0.001 or 1e-3 are both acceptable
336         
337          the precision for the [mu_0] related tests is that derived by long hand maintenance
338          of the precision for [pi] given in the ucum definitions. Implementations do not need
339          to maintain this precision
340        -->
341   
342        <case id="3-101"  value="6.3"      srcUnit="m"           dstUnit="m"             outcome="6.3"/>
343    <case id="3-102"  value="6.3"      srcUnit="mm"          dstUnit="m"             outcome="0.0063"/>
344    <case id="3-103"  value="6.3"      srcUnit="mm"          dstUnit="cm"            outcome="0.63"/>
345    <case id="3-104"  value="6.3"      srcUnit="s.m-1"       dstUnit="s/m"           outcome="6.3"/>
346    <case id="3-105" value="6.3"      srcUnit="s.mm-1"      dstUnit="s.m-1"         outcome="6300"/>
347    <case id="3-106" value="6.3"      srcUnit="s.mm-2"      dstUnit="s.m-2"         outcome="6300000"/>
348    <case id="3-107" value="6.3"      srcUnit="s.mm-2"      dstUnit="s.m-2"         outcome="6300000"/>
349    <case id="3-108" value="6.3"      srcUnit="s/m/g"       dstUnit="s.m-1.g"       outcome="6.3"/>
350    <case id="3-109" value="6.3"      srcUnit="ms/m/g"      dstUnit="s.m-1.g"       outcome="0.0063"/>
351    <case id="3-110" value="6.3"      srcUnit="s/mm/g"      dstUnit="s.m-1.g"       outcome="6300"/>
352    <case id="3-111" value="6.3"      srcUnit="s/m/mg"      dstUnit="s.m-1.g"       outcome="0.0063"/>
353    <case id="3-112" value="6.3"      srcUnit="ms/m"        dstUnit="s/m"           outcome="0.0063"/>
354    <case id="3-113" value="6.3"      srcUnit="4.s/m"       dstUnit="s/m"           outcome="25"/>
355    <case id="3-114" value="6.30"     srcUnit="4.s/m"       dstUnit="s/m"           outcome="25.2"/>
356    <case id="3-115" value="6.3"      srcUnit="s/4.m"       dstUnit="s/m"           outcome="1.6"/>
357    <case id="3-116"  value="6.3"      srcUnit="s/mm"        dstUnit="s/m"           outcome="6300"/>
358    <case id="3-117"  value="6.3"      srcUnit="ms/mm"       dstUnit="s/m"           outcome="6.3"/>
359        <case id="3-118"  value="6.30"     srcUnit="[in_i]"      dstUnit="m"             outcome="0.160"/>
360        <case id="3-119"  value="6.300"    srcUnit="[in_i]"      dstUnit="cm"            outcome="16.0"/>
361        <case id="3-120" value="6.3"      srcUnit="g.m.s-2.A-2" dstUnit="g.m.C-2"       outcome="6.3"/>
362        <case id="3-121" value="1"      srcUnit="10*-7.s"       dstUnit="s"       outcome="1e-7"/>
363        <case id="3-122" value="1"      srcUnit="4.[pi].10*-7.s"  dstUnit="s"       outcome="0.0000012566370614359172953850573533118011536788677597500423283899778369"/>
364        <case id="3-123" value="1"      srcUnit="4.[pi].10*-7.N"  dstUnit="N"       outcome="1.2566370614359172953850573533118011536788677597500423283899778369e-6"/>
365        <case id="3-124" value="1"      srcUnit="[mu_0]" dstUnit="g.m.C-2"       outcome="1.2566370614359172953850573533118011536788677597500423283899778369e-3"/>     
366        <case id="3-125"  value="1"      srcUnit="m[Hg]"  dstUnit="g.s-2.m-1"     outcome="133322000"/>
367        <case id="3-126"  value="1"      srcUnit="S"      dstUnit="g-1.m-2.C2.s"  outcome="0.001"/>
368        <!--
369     Seiverts Canonicalisation (conceptual example):
370      S  1
371      Ohm-1  1
372      (V/A)-1  1
373      A/V       1
374      A/(J/C)     1
375      A/((N.m)/C)   1
376      A/(((kg.m/s2).m)/C)  1
377      (C/s)/(((g.m/s2).m)/C)   0.001
378      (C.s-1)/(((g.m/s2).m)/C)  0.001
379      (C.s-1)/(((g.m.s-2).m)/C)  0.001
380      (C.s-1)/(((g.m.s-2).m).C-1)  0.001
381      (C.s-1)/(g.m.s-2.m.C-1)   0.001
382      (C.s-1).(g-1.m-1.s2.m-1.C)   0.001
383      C.s-1.g-1.m-1.s2.m-1.C    0.001
384      C2.m-2.s.g-1          0.001
385      C2.g-1.m-2.s      (alphabetical)    0.001
386        -->
387        <case id="3-127" value="1"   srcUnit="[ly]"     dstUnit="cm"            outcome="946073047258080000"/>
388        <case id="3-128" value="1"   srcUnit="1/[ly]"   dstUnit="cm-1"          outcome="1.0570008340246e-18"/>
389        <case id="3-129"  value="1.2" srcUnit="g.m"      dstUnit="m.g"           outcome="1.2"/>
390  </conversion>
391
392  <multiplication>
393    <!--
394          Given v1/u1, and v2/u2, multiply them together - should get something that is canonically equal
395          to vRes/uRes. Note that it doesn't have to be the same as vRes/uRes: the units
396          reported may differ in order or some other form, and the value may consequently
397          be different, but the result must convert to the stated value
398        -->
399    <case id="4-101" v1="1.5" u1="g" v2="2" u2="m" vRes="3.0" uRes="g.m"/>
400    <case id="4-102" v2="1.5" u2="g" v1="2" u1="m" vRes="3.0" uRes="g.m"/>
401  </multiplication>
402 
403 
404</ucumTests>
405