diff --git a/VectoCore/Utils/SI.cs b/VectoCore/Utils/SI.cs index 85832f498a6e88a188b50dae3e5b4344040f1710..7ef39437b935ab0b9bb91aa44646a3a4399ec5da 100644 --- a/VectoCore/Utils/SI.cs +++ b/VectoCore/Utils/SI.cs @@ -378,6 +378,11 @@ namespace TUGraz.VectoCore.Utils return new SI(si1._value * d, si1); } + public static SI operator *(double d, SI si1) + { + return new SI(d * si1._value, si1); + } + public static SI operator /(SI si1, double d) { return new SI(si1._value / d, si1); @@ -385,7 +390,7 @@ namespace TUGraz.VectoCore.Utils public static SI operator /(double d, SI si1) { - return si1 / d; + return new SI(d / si1._value, si1); } public static bool operator <(SI si1, SI si2) diff --git a/VectoCore/VectoCore.csproj b/VectoCore/VectoCore.csproj index d0a82d8e027862f7d5ffb5cb07f01cdb77f6edcf..a26dbfb6c289ef824e055dff5799da0f8bf36f77 100644 --- a/VectoCore/VectoCore.csproj +++ b/VectoCore/VectoCore.csproj @@ -25,7 +25,7 @@ <TreatWarningsAsErrors>true</TreatWarningsAsErrors> <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies> <CodeAnalysisIgnoreGeneratedCode>true</CodeAnalysisIgnoreGeneratedCode> - <CodeContractsEnableRuntimeChecking>True</CodeContractsEnableRuntimeChecking> + <CodeContractsEnableRuntimeChecking>False</CodeContractsEnableRuntimeChecking> <CodeContractsRuntimeOnlyPublicSurface>False</CodeContractsRuntimeOnlyPublicSurface> <CodeContractsRuntimeThrowOnFailure>True</CodeContractsRuntimeThrowOnFailure> <CodeContractsRuntimeCallSiteRequires>False</CodeContractsRuntimeCallSiteRequires> diff --git a/VectoCoreTest/Utils/SITest.cs b/VectoCoreTest/Utils/SITest.cs index 1b526b0ca39b85a20ae14bdef37191891abda278..683269b4e1260c20acc3d6921c213586fd0973ae 100644 --- a/VectoCoreTest/Utils/SITest.cs +++ b/VectoCoreTest/Utils/SITest.cs @@ -52,6 +52,20 @@ namespace TUGraz.VectoCore.Tests.Utils Assert.AreEqual(5000, (double)kg); Assert.AreEqual("5000 [g]", kg.ToString()); + var x = 5.SI(); + Assert.AreEqual((2.0 / 5.0).SI(), 2 / x); + Assert.AreEqual((5.0 / 2.0).SI(), x / 2); + Assert.AreEqual((2.0 * 5.0).SI(), 2 * x); + Assert.AreEqual((5.0 * 2.0).SI(), x * 2); + + Assert.AreEqual((2.0 / 5.0).SI(), 2.0 / x); + Assert.AreEqual((5.0 / 2.0).SI(), x / 2.0); + Assert.AreEqual((2 * 5).SI(), 2.0 * x); + Assert.AreEqual((5 * 2).SI(), x * 2.0); + + + var y = 2.SI(); + Assert.AreEqual((2 * 5).SI(), y * x); } } }