public void ToMathMLString_When_UsingPowerBaseUnit_Then_ResultShouldBedExpectedResult( MultiplicationSign multiplicationSign) { string expectedResult = $@"<mml:math xmlns:mml=""http://www.w3.org/1998/Math/MathML""> <mml:mfrac> <mml:mrow> <mml:mi mathvariant=""normal"" class=""MathML-Unit"">kg</mml:mi> <mml:mo>{MathML .GetMultiplicationSign(multiplicationSign)}</mml:mo> <mml:msup> <mml:mi mathvariant=""normal"" class=""MathML-Unit"">m</mml:mi> <mml:mn>2</mml:mn> </mml:msup> </mml:mrow> <mml:mrow> <mml:msup> <mml:mi mathvariant=""normal"" class=""MathML-Unit"">s</mml:mi> <mml:mn>3</mml:mn> </mml:msup> </mml:mrow> </mml:mfrac> </mml:math>"; var power = 54.Watts(); var result = power.Unit.BaseUnit.ToMathMLString(multiplicationSign); result.Should().Be(expectedResult); }
/// <summary> /// Gets the math ml. /// </summary> /// <param name="quantity">The quantity.</param> /// <param name="unitFormat">The unit format.</param> /// <param name="multiplicationSign">The multiplication sign.</param> /// <returns>The root math ml element.</returns> public static XElement ToMathML( this IQuantity quantity, UnitFormat unitFormat = UnitFormat.Default, MultiplicationSign multiplicationSign = MultiplicationSign.Invisible) { return(QuantityToMathMLConverter.DefaultConverter.GetMathML(quantity, unitFormat, multiplicationSign)); }
/// <summary> /// Gets the math ml. /// </summary> /// <param name="quantity">The quantity.</param> /// <param name="unitFormat">The unit format.</param> /// <param name="multiplicationSign">The multiplication sign.</param> /// <returns>The root math ml element.</returns> public static XElement ToMathML( this IQuantity quantity, UnitFormat unitFormat = UnitFormat.Default, MultiplicationSign multiplicationSign = MultiplicationSign.Invisible) { return QuantityToMathMLConverter.DefaultConverter.GetMathML(quantity, unitFormat, multiplicationSign); }
public void ToMathMLString_When_UsingPowerBaseUnit_Then_ResultShouldBedExpectedResult( MultiplicationSign multiplicationSign) { string expectedResult = $@"<mml:math xmlns:mml=""http://www.w3.org/1998/Math/MathML""> <mml:mfrac> <mml:mrow> <mml:mi mathvariant=""normal"" class=""MathML-Unit"">kg</mml:mi> <mml:mo>{MathML.GetMultiplicationSign(multiplicationSign)}</mml:mo> <mml:msup> <mml:mi mathvariant=""normal"" class=""MathML-Unit"">m</mml:mi> <mml:mn>2</mml:mn> </mml:msup> </mml:mrow> <mml:mrow> <mml:msup> <mml:mi mathvariant=""normal"" class=""MathML-Unit"">s</mml:mi> <mml:mn>3</mml:mn> </mml:msup> </mml:mrow> </mml:mfrac> </mml:math>"; var power = 54.Watts(); var result = power.Unit.BaseUnit.ToMathMLString(multiplicationSign); result.Should().Be(expectedResult); }
/// <summary> /// Gets the multiplication sign as a string. /// </summary> /// <param name="multiplicationSign">The multiplication sign.</param> /// <returns>The multiplication sign as a string.</returns> public static string GetMultiplicationSign(MultiplicationSign multiplicationSign) { switch (multiplicationSign) { case MultiplicationSign.Dot: return(MultiplicationDot); case MultiplicationSign.Star: return(MultiplicationStar); case MultiplicationSign.Cross: return(MultiplicationCross); default: return(MultiplicationInvisible); } }
/// <summary> /// Gets the math ml. /// </summary> /// <param name="quantity">The quantity.</param> /// <param name="unitFormat">The unit format.</param> /// <param name="multiplicationSign">The multiplication sign.</param> /// <returns>The root <see cref="XElement"/> node.</returns> public XElement GetMathML( IQuantity quantity, UnitFormat unitFormat = UnitFormat.Default, MultiplicationSign multiplicationSign = MultiplicationSign.Invisible) { var mn = new XElement(MathML.Mn, quantity.Value); var mrow = new XElement(MathML.Mrow, mn); var unitElement = mrow; if (unitFormat.HasFlag(UnitFormat.SurroundInBrackets)) { var mfenced = new XElement(MathML.Mfenced, MathML.OpenLeftBracket, MathML.CloseRightBrack); mrow.Add(mfenced); unitElement = mfenced; } ExpressionToMathMLVisitor.DefaultMathMLVisitor.Visit( quantity.Unit.GetExpression(), multiplicationSign, unitElement); return new XElement(MathML.Math, new XAttribute(MathML.NamespaceAlias, MathML.Namespace), mrow); }
/// <summary> /// Gets the math ml. /// </summary> /// <param name="quantity">The quantity.</param> /// <param name="unitFormat">The unit format.</param> /// <param name="multiplicationSign">The multiplication sign.</param> /// <returns>The root <see cref="XElement"/> node.</returns> public XElement GetMathML( IQuantity quantity, UnitFormat unitFormat = UnitFormat.Default, MultiplicationSign multiplicationSign = MultiplicationSign.Invisible) { var mn = new XElement(MathML.Mn, quantity.Value); var mrow = new XElement(MathML.Mrow, mn); var unitElement = mrow; if (unitFormat.HasFlag(UnitFormat.SurroundInBrackets)) { var mfenced = new XElement(MathML.Mfenced, MathML.OpenLeftBracket, MathML.CloseRightBrack); mrow.Add(mfenced); unitElement = mfenced; } ExpressionToMathMLVisitor.DefaultMathMLVisitor.Visit( quantity.Unit.GetExpression(), multiplicationSign, unitElement); return(new XElement(MathML.Math, new XAttribute(MathML.NamespaceAlias, MathML.Namespace), mrow)); }
/// <summary> /// Gets the math ml. /// </summary> /// <param name="unit">The unit.</param> /// <param name="multiplicationSign">The multiplication sign.</param> /// <returns> /// The root <see cref="XElement" /> of the MathML. /// </returns> public static XElement ToMathML( this IUnit unit, MultiplicationSign multiplicationSign = MultiplicationSign.Invisible) { return(ExpressionToMathMLVisitor.DefaultMathMLVisitor.Visit(unit.GetExpression(), multiplicationSign)); }
/// <summary> /// To the math ml as a string. /// </summary> /// <param name="unit">The unit.</param> /// <param name="multiplicationSign">The multiplication sign.</param> /// <returns>The resulting MathML string.</returns> public static string ToMathMLString( this IUnit unit, MultiplicationSign multiplicationSign = MultiplicationSign.Invisible) { return(unit.ToMathML(multiplicationSign).ToString()); }
/// <summary> /// Gets the multiplication sign as a string. /// </summary> /// <param name="multiplicationSign">The multiplication sign.</param> /// <returns>The multiplication sign.</returns> public static string GetMultiplicationSign(MultiplicationSign multiplicationSign) { switch (multiplicationSign) { case MultiplicationSign.Dot: return MultiplicationDot; case MultiplicationSign.Star: return MultiplicationStar; case MultiplicationSign.Cross: return MultiplicationCross; default: return MultiplicationInvisible; } }
/// <summary> /// Gets the math ml. /// </summary> /// <param name="unit">The unit.</param> /// <param name="multiplicationSign">The multiplication sign.</param> /// <returns> /// The root <see cref="XElement" /> of the MathML. /// </returns> public static XElement ToMathML( this IUnit unit, MultiplicationSign multiplicationSign = MultiplicationSign.Invisible) { return ExpressionToMathMLVisitor.DefaultMathMLVisitor.Visit(unit.GetExpression(), multiplicationSign); }
/// <summary> /// To the math ml as a string. /// </summary> /// <param name="unit">The unit.</param> /// <param name="multiplicationSign">The multiplication sign.</param> /// <returns>The resulting MathML string.</returns> public static string ToMathMLString( this IUnit unit, MultiplicationSign multiplicationSign = MultiplicationSign.Invisible) { return unit.ToMathML(multiplicationSign).ToString(); }