Skip to content

Commit 99457e7

Browse files
committed
Temperature: Remove generated arithmetic (BREAKING CHANGE)
See discussion in related issue. The semantics of the current Temperature arithmetic is plain wrong, such as adding 1 + 1 degrees Celsius is not 2 degrees Celsius, but rather +275.15 degrees Celsius. The problem is how we in speech mixi temperature delta/interval and temperature measurements, in contrast to time (DateTime vs TimeSpan, with different units). Refs #218 #218
1 parent a28aac8 commit 99457e7

File tree

4 files changed

+2
-54
lines changed

4 files changed

+2
-54
lines changed

UnitsNet.Tests/GeneratedCode/TemperatureTestsBase.g.cs

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -128,18 +128,6 @@ public void ConversionRoundTrip()
128128
Assert.AreEqual(1, Temperature.FromKelvins(kelvin.Kelvins).Kelvins, KelvinsTolerance);
129129
}
130130

131-
[Test]
132-
public void ArithmeticOperators()
133-
{
134-
Temperature v = Temperature.FromKelvins(1);
135-
Assert.AreEqual(-1, -v.Kelvins, KelvinsTolerance);
136-
Assert.AreEqual(2, (Temperature.FromKelvins(3)-v).Kelvins, KelvinsTolerance);
137-
Assert.AreEqual(2, (v + v).Kelvins, KelvinsTolerance);
138-
Assert.AreEqual(10, (v*10).Kelvins, KelvinsTolerance);
139-
Assert.AreEqual(10, (10*v).Kelvins, KelvinsTolerance);
140-
Assert.AreEqual(2, (Temperature.FromKelvins(10)/5).Kelvins, KelvinsTolerance);
141-
Assert.AreEqual(2, Temperature.FromKelvins(10)/Temperature.FromKelvins(5), KelvinsTolerance);
142-
}
143131

144132
[Test]
145133
public void ComparisonOperators()

UnitsNet/GeneratedCode/UnitClasses/Temperature.g.cs

Lines changed: 0 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -465,47 +465,6 @@ public static string GetAbbreviation(TemperatureUnit unit, [CanBeNull] Culture c
465465

466466
#endregion
467467

468-
#region Arithmetic Operators
469-
470-
#if !WINDOWS_UWP
471-
public static Temperature operator -(Temperature right)
472-
{
473-
return new Temperature(-right._kelvins);
474-
}
475-
476-
public static Temperature operator +(Temperature left, Temperature right)
477-
{
478-
return new Temperature(left._kelvins + right._kelvins);
479-
}
480-
481-
public static Temperature operator -(Temperature left, Temperature right)
482-
{
483-
return new Temperature(left._kelvins - right._kelvins);
484-
}
485-
486-
public static Temperature operator *(double left, Temperature right)
487-
{
488-
return new Temperature(left*right._kelvins);
489-
}
490-
491-
public static Temperature operator *(Temperature left, double right)
492-
{
493-
return new Temperature(left._kelvins*(double)right);
494-
}
495-
496-
public static Temperature operator /(Temperature left, double right)
497-
{
498-
return new Temperature(left._kelvins/(double)right);
499-
}
500-
501-
public static double operator /(Temperature left, Temperature right)
502-
{
503-
return Convert.ToDouble(left._kelvins/right._kelvins);
504-
}
505-
#endif
506-
507-
#endregion
508-
509468
#region Equality / IComparable
510469

511470
public int CompareTo(object obj)

UnitsNet/Scripts/Include-GenerateUnitTestBaseClassSourceCode.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ namespace UnitsNet.Tests
113113
# Call another script function to generate logarithm-specific arithmetic operator test code.
114114
GenerateLogarithmicTestBaseClassSourceCode -className $className -baseUnitPluralName $baseUnitPluralName -unit $unit
115115
}
116-
else {@"
116+
elseif ($unitClass.GenerateArithmetic -eq $true) {@"
117117
[Test]
118118
public void ArithmeticOperators()
119119
{

UnitsNet/UnitDefinitions/Temperature.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
"Name": "Temperature",
33
"BaseUnit": "Kelvin",
44
"XmlDoc": "A temperature is a numerical measure of hot or cold. Its measurement is by detection of heat radiation or particle velocity or kinetic energy, or by the bulk behavior of a thermometric material. It may be calibrated in any of various temperature scales, Celsius, Fahrenheit, Kelvin, etc. The fundamental physical definition of temperature is provided by thermodynamics.",
5+
"GenerateArithmetic": false,
56
"Units": [
67
{
78
"SingularName": "Kelvin",

0 commit comments

Comments
 (0)