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);
        }
Пример #5
0
        /// <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());
 }
Пример #10
0
 /// <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;
     }
 }
Пример #11
0
 /// <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);
 }
Пример #12
0
 /// <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();
 }