diff --git a/VectoCommon/VectoCommon/Utils/SI.cs b/VectoCommon/VectoCommon/Utils/SI.cs index a2e5377041695b1144c6c21788a6199be532ac54..46eb8fae123599dd84a7851b1164d8a495c69db2 100644 --- a/VectoCommon/VectoCommon/Utils/SI.cs +++ b/VectoCommon/VectoCommon/Utils/SI.cs @@ -1911,13 +1911,23 @@ namespace TUGraz.VectoCommon.Utils { if (Denominator.Any()) { if (Numerator.Any()) { - return string.Concat(Numerator) + "/" + string.Concat(Denominator); + return string.Concat( + Numerator.GroupBy(x => x) + .Select(x => x.Count() == 1 ? x.Key.ToString() : string.Format("{0}^{1}", x.Key, x.Count()))) + + "/" + + string.Concat( + Denominator.GroupBy(x => x) + .Select(x => x.Count() == 1 ? x.Key.ToString() : string.Format("{0}^{1}", x.Key, x.Count()))); } - return "1/" + string.Concat(Denominator); + return "1/" + string.Concat( + Denominator.GroupBy(x => x) + .Select(x => x.Count() == 1 ? x.Key.ToString() : string.Format("{0}^{1}", x.Key, x.Count()))); } if (Numerator.Any()) { - return string.Concat(Numerator); + return string.Concat( + Numerator.GroupBy(x => x) + .Select(x => x.Count() == 1 ? x.Key.ToString() : string.Format("{0}^{1}", x.Key, x.Count()))); } return "-"; diff --git a/VectoCore/VectoCoreTest/Utils/SITest.cs b/VectoCore/VectoCoreTest/Utils/SITest.cs index 0a44af7b0f25412a8f2103a9ea59377811351008..e54670fdb529e71b54ed30a2f6f26c12fcd6b6a8 100644 --- a/VectoCore/VectoCoreTest/Utils/SITest.cs +++ b/VectoCore/VectoCoreTest/Utils/SITest.cs @@ -129,7 +129,7 @@ namespace TUGraz.VectoCore.Tests.Utils var si4 = si2 * si3; Assert.AreEqual("10.0000 [W/s]", si4.ToString()); Assert.IsTrue(si4.HasEqualUnit(new SI().Watt.Per.Second)); - Assert.AreEqual("10.0000 [kgmm/ssss]", si4.ToBasicUnits().ToString()); + Assert.AreEqual("10.0000 [kgm^2/s^4]", si4.ToBasicUnits().ToString()); var kg = 5.SI().Kilo.Gramm; Assert.AreEqual(5.0, kg.Value()); @@ -437,6 +437,12 @@ namespace TUGraz.VectoCore.Tests.Utils Assert.AreEqual("3.50 [N]", 3.5.SI<Newton>().ToOutputFormat(2, showUnit: true)); Assert.AreEqual("18.00 [m/s]", 5.SI<MeterPerSecond>().ToOutputFormat(2, 3.6, true)); Assert.AreEqual("18.0000", 5.SI<MeterPerSecond>().ToOutputFormat(outputFactor: 3.6)); + + Assert.AreEqual("10.0000 [m^2]", 10.SI<SquareMeter>().ToOutputFormat(showUnit: true)); + + Assert.AreEqual("10.0000 [m^3]", 10.SI<CubicMeter>().ToOutputFormat(showUnit: true)); + + Assert.AreEqual("0.5000 [m/s^2]", 0.5.SI<MeterPerSquareSecond>().ToOutputFormat(showUnit: true)); } } } \ No newline at end of file