@@ -65,4 +65,90 @@ public void ApproximateAge()
65
65
Assert . Equal ( "2 days ago" , DateTime . Now . AddHours ( - 48 ) . ToApproximateAgeString ( ) ) ;
66
66
Assert . Equal ( "1 week ago" , DateTime . Now . AddDays ( - 7 ) . ToApproximateAgeString ( ) ) ;
67
67
}
68
+
69
+ [ Fact ]
70
+ public void SubtractSaturating_WithLargerValue_ReturnsNormalSubtraction ( )
71
+ {
72
+ var timeSpan1 = TimeSpan . FromHours ( 5 ) ;
73
+ var timeSpan2 = TimeSpan . FromHours ( 2 ) ;
74
+
75
+ var result = timeSpan1 . SubtractSaturating ( timeSpan2 ) ;
76
+
77
+ Assert . Equal ( TimeSpan . FromHours ( 3 ) , result ) ;
78
+ }
79
+
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
+ }
90
+
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
+ }
101
+
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
+ }
111
+
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
+ {
125
+ var largeTimeSpan1 = TimeSpan . FromDays ( 100 ) ;
126
+ var largeTimeSpan2 = TimeSpan . FromDays ( 50 ) ;
127
+
128
+ var result = largeTimeSpan1 . SubtractSaturating ( largeTimeSpan2 ) ;
129
+
130
+ Assert . Equal ( TimeSpan . FromDays ( 50 ) , result ) ;
131
+ }
132
+
133
+ [ Fact ]
134
+ public void SubtractSaturating_WithNegativeBase_ReturnsZero ( )
135
+ {
136
+ var negativeTimeSpan = TimeSpan . FromHours ( - 2 ) ;
137
+ var positiveTimeSpan = TimeSpan . FromHours ( 1 ) ;
138
+
139
+ var result = negativeTimeSpan . SubtractSaturating ( positiveTimeSpan ) ;
140
+
141
+ Assert . Equal ( TimeSpan . Zero , result ) ;
142
+ }
143
+
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 ) ;
153
+ }
68
154
}
0 commit comments