1
1
// Licensed under MIT No Attribution, see LICENSE file at the root.
2
2
// Copyright 2013 Andreas Gullberg Larsen ([email protected] ). Maintained at https://github.com/angularsen/UnitsNet.
3
3
4
- using System ;
4
+ using System . Collections . Generic ;
5
5
using System . Diagnostics . CodeAnalysis ;
6
- using System . Globalization ;
7
6
using Xunit ;
8
- using UnitsNet . Units ;
9
7
10
8
namespace UnitsNet . Tests . CustomCode
11
9
{
@@ -27,101 +25,103 @@ public class TemperatureTests : TemperatureTestsBase
27
25
28
26
protected override double KelvinsInOneKelvin => 1 ;
29
27
28
+ public static IEnumerable < object [ ] > DividedByTemperatureDeltaEqualsTemperatureData { get ; } =
29
+ new List < object [ ] >
30
+ {
31
+ new object [ ] { Temperature . FromDegreesCelsius ( 10 ) , 1 , Temperature . FromDegreesCelsius ( 10 ) } ,
32
+ new object [ ] { Temperature . FromDegreesCelsius ( 10 ) , 5 , Temperature . FromDegreesCelsius ( 2 ) } ,
33
+ new object [ ] { Temperature . FromDegreesCelsius ( 10 ) , - 10 , Temperature . FromDegreesCelsius ( - 1 ) } ,
34
+ new object [ ] { Temperature . FromDegreesFahrenheit ( 10 ) , 1 , Temperature . FromDegreesFahrenheit ( 10 ) } ,
35
+ new object [ ] { Temperature . FromDegreesFahrenheit ( 10 ) , 5 , Temperature . FromDegreesFahrenheit ( 2 ) } ,
36
+ new object [ ] { Temperature . FromDegreesFahrenheit ( 10 ) , - 10 , Temperature . FromDegreesFahrenheit ( - 1 ) }
37
+ } ;
38
+
30
39
[ SuppressMessage ( "ReSharper" , "ImpureMethodCallOnReadonlyValueField" ,
31
40
Justification = "R# incorrectly identifies method as impure, due to internal method calls." ) ]
32
41
[ Theory ]
33
- [ InlineData ( TemperatureUnit . DegreeCelsius , 10 , 1 , "10 °C" ) ]
34
- [ InlineData ( TemperatureUnit . DegreeCelsius , 10 , 5 , "2 °C" ) ]
35
- [ InlineData ( TemperatureUnit . DegreeCelsius , 10 , - 10 , "-1 °C" ) ]
36
- [ InlineData ( TemperatureUnit . DegreeFahrenheit , 10 , 1 , "10 °F" ) ]
37
- [ InlineData ( TemperatureUnit . DegreeFahrenheit , 10 , 5 , "2 °F" ) ]
38
- [ InlineData ( TemperatureUnit . DegreeFahrenheit , 10 , - 10 , "-1 °F" ) ]
39
- public void DividedByTemperatureDeltaEqualsTemperature ( TemperatureUnit unit , int temperatureVal , int divisor , string expected )
42
+ [ MemberData ( nameof ( DividedByTemperatureDeltaEqualsTemperatureData ) ) ]
43
+ public void DividedByTemperatureDeltaEqualsTemperature ( Temperature temperature , int divisor , Temperature expected )
40
44
{
41
- Temperature temperature = Temperature . From ( temperatureVal , unit ) ;
42
-
43
- // Act
44
- Temperature resultTemp = temperature . Divide ( divisor , unit ) ;
45
-
46
- string actual = resultTemp . ToUnit ( unit ) . ToString ( CultureInfo . InvariantCulture , "{0:0} {1}" ) ;
47
- Assert . Equal ( expected , actual ) ;
45
+ Temperature resultTemp = temperature . Divide ( divisor , temperature . Unit ) ;
46
+ Assert . True ( expected . Equals ( resultTemp , 1e-5 , ComparisonType . Absolute ) ) ;
48
47
}
49
48
49
+ public static IEnumerable < object [ ] > MultiplyByTemperatureDeltaEqualsTemperatureData { get ; } =
50
+ new List < object [ ] >
51
+ {
52
+ new object [ ] { Temperature . FromDegreesCelsius ( 10 ) , 0 , Temperature . FromDegreesCelsius ( 0 ) } ,
53
+ new object [ ] { Temperature . FromDegreesCelsius ( 10 ) , 5 , Temperature . FromDegreesCelsius ( 50 ) } ,
54
+ new object [ ] { Temperature . FromDegreesCelsius ( 10 ) , - 5 , Temperature . FromDegreesCelsius ( - 50 ) } ,
55
+ new object [ ] { Temperature . FromDegreesFahrenheit ( 10 ) , 0 , Temperature . FromDegreesFahrenheit ( 0 ) } ,
56
+ new object [ ] { Temperature . FromDegreesFahrenheit ( 10 ) , 5 , Temperature . FromDegreesFahrenheit ( 50 ) } ,
57
+ new object [ ] { Temperature . FromDegreesFahrenheit ( 10 ) , - 5 , Temperature . FromDegreesFahrenheit ( - 50 ) }
58
+ } ;
59
+
50
60
[ SuppressMessage ( "ReSharper" , "ImpureMethodCallOnReadonlyValueField" ,
51
61
Justification = "R# incorrectly identifies method as impure, due to internal method calls." ) ]
52
62
[ Theory ]
53
- [ InlineData ( TemperatureUnit . DegreeCelsius , 10 , 0 , "0 °C" ) ]
54
- [ InlineData ( TemperatureUnit . DegreeCelsius , 10 , 5 , "50 °C" ) ]
55
- [ InlineData ( TemperatureUnit . DegreeCelsius , 10 , - 5 , "-50 °C" ) ]
56
- [ InlineData ( TemperatureUnit . DegreeFahrenheit , 10 , 0 , "0 °F" ) ]
57
- [ InlineData ( TemperatureUnit . DegreeFahrenheit , 10 , 5 , "50 °F" ) ]
58
- [ InlineData ( TemperatureUnit . DegreeFahrenheit , 10 , - 5 , "-50 °F" ) ]
59
- public void MultiplyByTemperatureDeltaEqualsTemperature ( TemperatureUnit unit , int temperatureVal , int factor , string expected )
63
+ [ MemberData ( nameof ( MultiplyByTemperatureDeltaEqualsTemperatureData ) ) ]
64
+ public void MultiplyByTemperatureDeltaEqualsTemperature ( Temperature temperature , int factor , Temperature expected )
60
65
{
61
- Temperature temperature = Temperature . From ( temperatureVal , unit ) ;
62
-
63
- // Act
64
- Temperature resultTemp = temperature . Multiply ( factor , unit ) ;
65
-
66
- string actual = resultTemp . ToUnit ( unit ) . ToString ( CultureInfo . InvariantCulture , "{0:0} {1}" ) ;
67
- Assert . Equal ( expected , actual ) ;
66
+ Temperature resultTemp = temperature . Multiply ( factor , temperature . Unit ) ;
67
+ Assert . True ( expected . Equals ( resultTemp , 1e-5 , ComparisonType . Absolute ) ) ;
68
68
}
69
69
70
+ public static IEnumerable < object [ ] > TemperatureDeltaPlusTemperatureEqualsTemperatureData { get ; } =
71
+ new List < object [ ] >
72
+ {
73
+ new object [ ] { Temperature . FromDegreesCelsius ( - 10 ) , TemperatureDelta . FromDegreesCelsius ( 0 ) , Temperature . FromDegreesCelsius ( - 10 ) } ,
74
+ new object [ ] { Temperature . FromDegreesCelsius ( - 10 ) , TemperatureDelta . FromDegreesCelsius ( 10 ) , Temperature . FromDegreesCelsius ( 0 ) } ,
75
+ new object [ ] { Temperature . FromDegreesCelsius ( - 10 ) , TemperatureDelta . FromDegreesCelsius ( 20 ) , Temperature . FromDegreesCelsius ( 10 ) } ,
76
+ new object [ ] { Temperature . FromDegreesFahrenheit ( - 10 ) , TemperatureDelta . FromDegreesFahrenheit ( 0 ) , Temperature . FromDegreesFahrenheit ( - 10 ) } ,
77
+ new object [ ] { Temperature . FromDegreesFahrenheit ( - 10 ) , TemperatureDelta . FromDegreesFahrenheit ( 10 ) , Temperature . FromDegreesFahrenheit ( 0 ) } ,
78
+ new object [ ] { Temperature . FromDegreesFahrenheit ( - 10 ) , TemperatureDelta . FromDegreesFahrenheit ( 20 ) , Temperature . FromDegreesFahrenheit ( 10 ) }
79
+ } ;
80
+
70
81
[ Theory ]
71
- [ InlineData ( TemperatureUnit . DegreeCelsius , - 10 , 0 , "-10 °C" ) ]
72
- [ InlineData ( TemperatureUnit . DegreeCelsius , - 10 , 10 , "0 °C" ) ]
73
- [ InlineData ( TemperatureUnit . DegreeCelsius , - 10 , 20 , "10 °C" ) ]
74
- [ InlineData ( TemperatureUnit . DegreeFahrenheit , - 10 , 0 , "-10 °F" ) ]
75
- [ InlineData ( TemperatureUnit . DegreeFahrenheit , - 10 , 10 , "0 °F" ) ]
76
- [ InlineData ( TemperatureUnit . DegreeFahrenheit , - 10 , 20 , "10 °F" ) ]
77
- public void TemperatureDeltaPlusTemperatureEqualsTemperature ( TemperatureUnit unit , int deltaVal , int temperatureVal , string expected )
82
+ [ MemberData ( nameof ( TemperatureDeltaPlusTemperatureEqualsTemperatureData ) ) ]
83
+ public void TemperatureDeltaPlusTemperatureEqualsTemperature ( Temperature temperature , TemperatureDelta delta , Temperature expected )
78
84
{
79
- Temperature temperature = Temperature . From ( temperatureVal , unit ) ;
80
- TemperatureDelta delta = TemperatureDelta . From ( deltaVal , ( TemperatureDeltaUnit ) Enum . Parse ( typeof ( TemperatureDeltaUnit ) , unit . ToString ( ) ) ) ;
81
-
82
- // Act
83
85
Temperature resultTemp = delta + temperature ;
84
-
85
- string actual = resultTemp . ToUnit ( unit ) . ToString ( CultureInfo . InvariantCulture , "{0:0} {1}" ) ;
86
- Assert . Equal ( expected , actual ) ;
86
+ Assert . True ( expected . Equals ( resultTemp , 1e-5 , ComparisonType . Absolute ) ) ;
87
87
}
88
88
89
+ public static IEnumerable < object [ ] > TemperatureMinusTemperatureDeltaEqualsTemperatureData { get ; } =
90
+ new List < object [ ] >
91
+ {
92
+ new object [ ] { Temperature . FromDegreesCelsius ( 20 ) , TemperatureDelta . FromDegreesCelsius ( 10 ) , Temperature . FromDegreesCelsius ( 10 ) } ,
93
+ new object [ ] { Temperature . FromDegreesCelsius ( 20 ) , TemperatureDelta . FromDegreesCelsius ( 20 ) , Temperature . FromDegreesCelsius ( 0 ) } ,
94
+ new object [ ] { Temperature . FromDegreesCelsius ( 20 ) , TemperatureDelta . FromDegreesCelsius ( 30 ) , Temperature . FromDegreesCelsius ( - 10 ) } ,
95
+ new object [ ] { Temperature . FromDegreesFahrenheit ( 20 ) , TemperatureDelta . FromDegreesFahrenheit ( 10 ) , Temperature . FromDegreesFahrenheit ( 10 ) } ,
96
+ new object [ ] { Temperature . FromDegreesFahrenheit ( 20 ) , TemperatureDelta . FromDegreesFahrenheit ( 20 ) , Temperature . FromDegreesFahrenheit ( 0 ) } ,
97
+ new object [ ] { Temperature . FromDegreesFahrenheit ( 20 ) , TemperatureDelta . FromDegreesFahrenheit ( 30 ) , Temperature . FromDegreesFahrenheit ( - 10 ) }
98
+ } ;
99
+
89
100
[ Theory ]
90
- [ InlineData ( TemperatureUnit . DegreeCelsius , 20 , 10 , "10 °C" ) ]
91
- [ InlineData ( TemperatureUnit . DegreeCelsius , 20 , 20 , "0 °C" ) ]
92
- [ InlineData ( TemperatureUnit . DegreeCelsius , 20 , 30 , "-10 °C" ) ]
93
- [ InlineData ( TemperatureUnit . DegreeFahrenheit , 20 , 10 , "10 °F" ) ]
94
- [ InlineData ( TemperatureUnit . DegreeFahrenheit , 20 , 20 , "0 °F" ) ]
95
- [ InlineData ( TemperatureUnit . DegreeFahrenheit , 20 , 30 , "-10 °F" ) ]
96
- public void TemperatureMinusTemperatureDeltaEqualsTemperature ( TemperatureUnit unit , int temperatureVal , int deltaVal , string expected )
101
+ [ MemberData ( nameof ( TemperatureMinusTemperatureDeltaEqualsTemperatureData ) ) ]
102
+ public void TemperatureMinusTemperatureDeltaEqualsTemperature ( Temperature temperature , TemperatureDelta delta , Temperature expected )
97
103
{
98
- Temperature temperature = Temperature . From ( temperatureVal , unit ) ;
99
- TemperatureDelta delta = TemperatureDelta . From ( deltaVal , ( TemperatureDeltaUnit ) Enum . Parse ( typeof ( TemperatureDeltaUnit ) , unit . ToString ( ) ) ) ;
100
-
101
- // Act
102
104
Temperature resultTemp = temperature - delta ;
103
-
104
- string actual = resultTemp . ToUnit ( unit ) . ToString ( CultureInfo . InvariantCulture , "{0:0} {1}" ) ;
105
- Assert . Equal ( expected , actual ) ;
105
+ Assert . True ( expected . Equals ( resultTemp , 1e-5 , ComparisonType . Absolute ) ) ;
106
106
}
107
107
108
+ public static IEnumerable < object [ ] > TemperaturePlusTemperatureDeltaEqualsTemperatureData { get ; } =
109
+ new List < object [ ] >
110
+ {
111
+ new object [ ] { Temperature . FromDegreesCelsius ( - 10 ) , TemperatureDelta . FromDegreesCelsius ( 0 ) , Temperature . FromDegreesCelsius ( - 10 ) } ,
112
+ new object [ ] { Temperature . FromDegreesCelsius ( - 10 ) , TemperatureDelta . FromDegreesCelsius ( 10 ) , Temperature . FromDegreesCelsius ( 0 ) } ,
113
+ new object [ ] { Temperature . FromDegreesCelsius ( - 10 ) , TemperatureDelta . FromDegreesCelsius ( 20 ) , Temperature . FromDegreesCelsius ( 10 ) } ,
114
+ new object [ ] { Temperature . FromDegreesFahrenheit ( - 10 ) , TemperatureDelta . FromDegreesFahrenheit ( 0 ) , Temperature . FromDegreesFahrenheit ( - 10 ) } ,
115
+ new object [ ] { Temperature . FromDegreesFahrenheit ( - 10 ) , TemperatureDelta . FromDegreesFahrenheit ( 10 ) , Temperature . FromDegreesFahrenheit ( 0 ) } ,
116
+ new object [ ] { Temperature . FromDegreesFahrenheit ( - 10 ) , TemperatureDelta . FromDegreesFahrenheit ( 20 ) , Temperature . FromDegreesFahrenheit ( 10 ) }
117
+ } ;
118
+
108
119
[ Theory ]
109
- [ InlineData ( TemperatureUnit . DegreeCelsius , - 10 , 0 , "-10 °C" ) ]
110
- [ InlineData ( TemperatureUnit . DegreeCelsius , - 10 , 10 , "0 °C" ) ]
111
- [ InlineData ( TemperatureUnit . DegreeCelsius , - 10 , 20 , "10 °C" ) ]
112
- [ InlineData ( TemperatureUnit . DegreeFahrenheit , - 10 , 0 , "-10 °F" ) ]
113
- [ InlineData ( TemperatureUnit . DegreeFahrenheit , - 10 , 10 , "0 °F" ) ]
114
- [ InlineData ( TemperatureUnit . DegreeFahrenheit , - 10 , 20 , "10 °F" ) ]
115
- public void TemperaturePlusTemperatureDeltaEqualsTemperature ( TemperatureUnit unit , int temperatureVal , int deltaVal , string expected )
120
+ [ MemberData ( nameof ( TemperaturePlusTemperatureDeltaEqualsTemperatureData ) ) ]
121
+ public void TemperaturePlusTemperatureDeltaEqualsTemperature ( Temperature temperature , TemperatureDelta delta , Temperature expected )
116
122
{
117
- Temperature temperature = Temperature . From ( temperatureVal , unit ) ;
118
- TemperatureDelta delta = TemperatureDelta . From ( deltaVal , ( TemperatureDeltaUnit ) Enum . Parse ( typeof ( TemperatureDeltaUnit ) , unit . ToString ( ) ) ) ;
119
-
120
- // Act
121
123
Temperature resultTemp = temperature + delta ;
122
-
123
- string actual = resultTemp . ToUnit ( unit ) . ToString ( CultureInfo . InvariantCulture , "{0:0} {1}" ) ;
124
- Assert . Equal ( expected , actual ) ;
124
+ Assert . True ( expected . Equals ( resultTemp , 1e-5 , ComparisonType . Absolute ) ) ;
125
125
}
126
126
}
127
127
}
0 commit comments