@@ -67,41 +67,88 @@ public void ApproximateAge()
67
67
}
68
68
69
69
[ Fact ]
70
- public void SubtractSaturating ( )
70
+ public void SubtractSaturating_WithLargerValue_ReturnsNormalSubtraction ( )
71
71
{
72
- // Basic case: normal subtraction when result is positive
73
72
var timeSpan1 = TimeSpan . FromHours ( 5 ) ;
74
73
var timeSpan2 = TimeSpan . FromHours ( 2 ) ;
75
- Assert . Equal ( TimeSpan . FromHours ( 3 ) , timeSpan1 . SubtractSaturating ( timeSpan2 ) ) ;
74
+
75
+ var result = timeSpan1 . SubtractSaturating ( timeSpan2 ) ;
76
+
77
+ Assert . Equal ( TimeSpan . FromHours ( 3 ) , result ) ;
78
+ }
76
79
77
- // Saturating case: result would be negative, should return TimeSpan.Zero
78
- var timeSpan3 = TimeSpan . FromHours ( 2 ) ;
79
- var timeSpan4 = TimeSpan . FromHours ( 5 ) ;
80
- Assert . Equal ( TimeSpan . Zero , timeSpan3 . SubtractSaturating ( timeSpan4 ) ) ;
80
+ [ Fact ]
81
+ public void SubtractSaturating_WithSmallerValue_ReturnsZero ( )
82
+ {
83
+ var timeSpan1 = TimeSpan . FromHours ( 2 ) ;
84
+ var timeSpan2 = TimeSpan . FromHours ( 5 ) ;
85
+
86
+ var result = timeSpan1 . SubtractSaturating ( timeSpan2 ) ;
87
+
88
+ Assert . Equal ( TimeSpan . Zero , result ) ;
89
+ }
81
90
82
- // Edge case: equal values should return TimeSpan.Zero
83
- var timeSpan5 = TimeSpan . FromMinutes ( 30 ) ;
84
- var timeSpan6 = TimeSpan . FromMinutes ( 30 ) ;
85
- Assert . Equal ( TimeSpan . Zero , timeSpan5 . SubtractSaturating ( timeSpan6 ) ) ;
91
+ [ Fact ]
92
+ public void SubtractSaturating_WithEqualValues_ReturnsZero ( )
93
+ {
94
+ var timeSpan1 = TimeSpan . FromMinutes ( 30 ) ;
95
+ var timeSpan2 = TimeSpan . FromMinutes ( 30 ) ;
96
+
97
+ var result = timeSpan1 . SubtractSaturating ( timeSpan2 ) ;
98
+
99
+ Assert . Equal ( TimeSpan . Zero , result ) ;
100
+ }
86
101
87
- // Zero cases
88
- Assert . Equal ( TimeSpan . FromSeconds ( 10 ) , TimeSpan . FromSeconds ( 10 ) . SubtractSaturating ( TimeSpan . Zero ) ) ;
89
- Assert . Equal ( TimeSpan . Zero , TimeSpan . Zero . SubtractSaturating ( TimeSpan . FromSeconds ( 5 ) ) ) ;
90
- Assert . Equal ( TimeSpan . Zero , TimeSpan . Zero . SubtractSaturating ( TimeSpan . Zero ) ) ;
102
+ [ Fact ]
103
+ public void SubtractSaturating_WithZeroValue_ReturnsOriginalValue ( )
104
+ {
105
+ var timeSpan = TimeSpan . FromSeconds ( 10 ) ;
106
+
107
+ var result = timeSpan . SubtractSaturating ( TimeSpan . Zero ) ;
108
+
109
+ Assert . Equal ( TimeSpan . FromSeconds ( 10 ) , result ) ;
110
+ }
91
111
92
- // Large values
112
+ [ Fact ]
113
+ public void SubtractSaturating_WithZeroAsBase_ReturnsZero ( )
114
+ {
115
+ var result1 = TimeSpan . Zero . SubtractSaturating ( TimeSpan . FromSeconds ( 5 ) ) ;
116
+ var result2 = TimeSpan . Zero . SubtractSaturating ( TimeSpan . Zero ) ;
117
+
118
+ Assert . Equal ( TimeSpan . Zero , result1 ) ;
119
+ Assert . Equal ( TimeSpan . Zero , result2 ) ;
120
+ }
121
+
122
+ [ Fact ]
123
+ public void SubtractSaturating_WithLargeValues_ReturnsCorrectResult ( )
124
+ {
93
125
var largeTimeSpan1 = TimeSpan . FromDays ( 100 ) ;
94
126
var largeTimeSpan2 = TimeSpan . FromDays ( 50 ) ;
95
- Assert . Equal ( TimeSpan . FromDays ( 50 ) , largeTimeSpan1 . SubtractSaturating ( largeTimeSpan2 ) ) ;
127
+
128
+ var result = largeTimeSpan1 . SubtractSaturating ( largeTimeSpan2 ) ;
129
+
130
+ Assert . Equal ( TimeSpan . FromDays ( 50 ) , result ) ;
131
+ }
96
132
97
- // Negative TimeSpan values - testing with negative self value
133
+ [ Fact ]
134
+ public void SubtractSaturating_WithNegativeBase_ReturnsZero ( )
135
+ {
98
136
var negativeTimeSpan = TimeSpan . FromHours ( - 2 ) ;
99
137
var positiveTimeSpan = TimeSpan . FromHours ( 1 ) ;
100
- Assert . Equal ( TimeSpan . Zero , negativeTimeSpan . SubtractSaturating ( positiveTimeSpan ) ) ;
138
+
139
+ var result = negativeTimeSpan . SubtractSaturating ( positiveTimeSpan ) ;
140
+
141
+ Assert . Equal ( TimeSpan . Zero , result ) ;
142
+ }
101
143
102
- // Negative other value (subtracting negative is like adding)
103
- var timeSpan7 = TimeSpan . FromHours ( 3 ) ;
104
- var negativeTimeSpan2 = TimeSpan . FromHours ( - 2 ) ;
105
- Assert . Equal ( TimeSpan . FromHours ( 5 ) , timeSpan7 . SubtractSaturating ( negativeTimeSpan2 ) ) ;
144
+ [ Fact ]
145
+ public void SubtractSaturating_WithNegativeSubtrahend_ReturnsAddedValue ( )
146
+ {
147
+ var timeSpan = TimeSpan . FromHours ( 3 ) ;
148
+ var negativeTimeSpan = TimeSpan . FromHours ( - 2 ) ;
149
+
150
+ var result = timeSpan . SubtractSaturating ( negativeTimeSpan ) ;
151
+
152
+ Assert . Equal ( TimeSpan . FromHours ( 5 ) , result ) ;
106
153
}
107
154
}
0 commit comments