spec/conv_spec.rb in asciimath2unitsml-0.3.0 vs spec/conv_spec.rb in asciimath2unitsml-0.3.1
- old
+ new
@@ -487,10 +487,82 @@
</mrow>
</math>
OUTPUT
end
+ it "deals with parentheses" do
+ expect(xmlpp(Asciimath2UnitsML::Conv.new().Asciimath2UnitsML(<<~INPUT))).to be_equivalent_to xmlpp(<<~OUTPUT)
+ 10 "unitsml(K/(kg*m))"
+ INPUT
+ <math xmlns='http://www.w3.org/1998/Math/MathML'>
+ <mn>10</mn>
+ <mo rspace='thickmathspace'>⁢</mo>
+ <mrow xref='U_K/kg.m'>
+ <mi mathvariant='normal'>K</mi>
+ <mo>/</mo>
+ <mi mathvariant='normal'>kg</mi>
+ <mo>·</mo>
+ <mi mathvariant='normal'>m</mi>
+ </mrow>
+ <Unit xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='U_K.kg-1.m-1' dimensionURL='#D_L-1M-1Theta'>
+ <UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
+ <UnitName xml:lang='en'>K*kg^-1*m^-1</UnitName>
+ <UnitSymbol type='HTML'>
+ K·kg
+ <sup>−1</sup>
+ ·m
+ <sup>−1</sup>
+ </UnitSymbol>
+ <UnitSymbol type='MathML'>
+ <math xmlns='http://www.w3.org/1998/Math/MathML'>
+ <mrow>
+ <mi mathvariant='normal'>K</mi>
+ <mo>·</mo>
+ <msup>
+ <mrow>
+ <mi mathvariant='normal'>kg</mi>
+ </mrow>
+ <mrow>
+ <mo>−</mo>
+ <mn>1</mn>
+ </mrow>
+ </msup>
+ <mo>·</mo>
+ <msup>
+ <mrow>
+ <mi mathvariant='normal'>m</mi>
+ </mrow>
+ <mrow>
+ <mo>−</mo>
+ <mn>1</mn>
+ </mrow>
+ </msup>
+ </mrow>
+ </math>
+ </UnitSymbol>
+ <RootUnits>
+ <EnumeratedRootUnit unit='kelvin'/>
+ <EnumeratedRootUnit unit='gram' prefix='k' powerNumerator='-1'/>
+ <EnumeratedRootUnit unit='meter' powerNumerator='-1'/>
+ </RootUnits>
+ </Unit>
+ <Prefix xmlns='https://schema.unitsml.org/unitsml/1.0' prefixBase='10' prefixPower='3' xml:id='NISTp10_3'>
+ <PrefixName xml:lang='en'>kilo</PrefixName>
+ <PrefixSymbol type='ASCII'>k</PrefixSymbol>
+ <PrefixSymbol type='unicode'>k</PrefixSymbol>
+ <PrefixSymbol type='LaTeX'>k</PrefixSymbol>
+ <PrefixSymbol type='HTML'>k</PrefixSymbol>
+ </Prefix>
+ <Dimension xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='D_L-1M-1Theta'>
+ <Length symbol='L' powerNumerator='-1'/>
+ <Mass symbol='M' powerNumerator='-1'/>
+ <ThermodynamicTemperature symbol='Theta' powerNumerator='1'/>
+ </Dimension>
+ </math>
+ OUTPUT
+ end
+
it "deals with notational variants" do
expect(xmlpp(Asciimath2UnitsML::Conv.new().Asciimath2UnitsML(<<~INPUT))).to be_equivalent_to xmlpp(<<~OUTPUT)
9 "unitsml(degK)" + 10 "unitsml(K)"
INPUT
<math xmlns='http://www.w3.org/1998/Math/MathML'>
@@ -645,11 +717,11 @@
OUTPUT
end
it "deals with units division" do
expect(xmlpp(Asciimath2UnitsML::Conv.new().Asciimath2UnitsML(<<~INPUT))).to be_equivalent_to xmlpp(<<~OUTPUT)
- 9 "unitsml(A*C^3)" + 13 "unitsml(A/C^-3)"
+ 9 "unitsml(A*C^3)" + 13 "unitsml(A/C^-3)" + 2 "unitsml(J/kg*K)"
INPUT
<math xmlns='http://www.w3.org/1998/Math/MathML'>
<mn>9</mn>
<mo rspace='thickmathspace'>⁢</mo>
<mrow xref='U_A.C3'>
@@ -710,9 +782,79 @@
<mo>−</mo>
<mn>3</mn>
</mrow>
</msup>
</mrow>
+ <mo>+</mo>
+<mn>2</mn>
+<mo rspace='thickmathspace'>⁢</mo>
+<mrow xref='U_J/kg.K'>
+ <mi mathvariant='normal'>J</mi>
+ <mo>/</mo>
+ <mi mathvariant='normal'>kg</mi>
+ <mo>·</mo>
+ <mi mathvariant='normal'>K</mi>
+</mrow>
+<Unit xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='U_NISTu13.u27p10_3e-1/1.u5e-1/1' dimensionURL='#D_L2M0T-2Theta-1'>
+ <UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
+ <UnitName xml:lang='en'>joule per kilogram kelvin</UnitName>
+ <UnitSymbol type='HTML'>
+ J·kg
+ <sup>−1</sup>
+ ·K
+ <sup>−1</sup>
+ </UnitSymbol>
+ <UnitSymbol type='MathML'>
+ <math xmlns='http://www.w3.org/1998/Math/MathML'>
+ <mrow>
+ <mi mathvariant='normal'>J</mi>
+ <mo>·</mo>
+ <msup>
+ <mrow>
+ <mi mathvariant='normal'>kg</mi>
+ </mrow>
+ <mrow>
+ <mo>−</mo>
+ <mn>1</mn>
+ </mrow>
+ </msup>
+ <mo>·</mo>
+ <msup>
+ <mrow>
+ <mi mathvariant='normal'>K</mi>
+ </mrow>
+ <mrow>
+ <mo>−</mo>
+ <mn>1</mn>
+ </mrow>
+ </msup>
+ </mrow>
+ </math>
+ </UnitSymbol>
+ <RootUnits>
+ <EnumeratedRootUnit unit='joule'/>
+ <EnumeratedRootUnit unit='gram' prefix='k' powerNumerator='-1'/>
+ <EnumeratedRootUnit unit='kelvin' powerNumerator='-1'/>
+ </RootUnits>
+</Unit>
+<Prefix xmlns='https://schema.unitsml.org/unitsml/1.0' prefixBase='10' prefixPower='3' xml:id='NISTp10_3'>
+ <PrefixName xml:lang='en'>kilo</PrefixName>
+ <PrefixSymbol type='ASCII'>k</PrefixSymbol>
+ <PrefixSymbol type='unicode'>k</PrefixSymbol>
+ <PrefixSymbol type='LaTeX'>k</PrefixSymbol>
+ <PrefixSymbol type='HTML'>k</PrefixSymbol>
+</Prefix>
+<Dimension xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='NISTd40'>
+ <Length symbol='L' powerNumerator='2'/>
+ <Time symbol='T' powerNumerator='-2'/>
+ <ThermodynamicTemperature symbol='Theta' powerNumerator='-1'/>
+</Dimension>
+<Dimension xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='D_L2M0T-2Theta-1'>
+ <Length symbol='L' powerNumerator='2'/>
+ <Mass symbol='M' powerNumerator='0'/>
+ <Time symbol='T' powerNumerator='-2'/>
+ <ThermodynamicTemperature symbol='Theta' powerNumerator='-1'/>
+</Dimension>
</math>
OUTPUT
end
it "converts MathML to MatML + UnitsML" do