Skip to content

Commit d9b388c

Browse files
erioveangularsen
authored andcommitted
Added equality/comparison overloads for Duration and TimeSpan (#171)
* Added equality overloads for Duration and TimeSpan
1 parent 8370a1b commit d9b388c

File tree

2 files changed

+157
-1
lines changed

2 files changed

+157
-1
lines changed

UnitsNet.Tests/CustomCode/DurationTests.cs

Lines changed: 97 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ public static void ToTimeSpanShouldNotThrowExceptionOnValuesSlightlyLargerThanTi
6565
{
6666
Duration duration = Duration.FromSeconds(TimeSpan.MinValue.TotalSeconds + 1);
6767
TimeSpan timeSpan = duration.ToTimeSpan();
68-
Assert.AreEqual(duration.Seconds, timeSpan.TotalSeconds,1e-3);
68+
Assert.AreEqual(duration.Seconds, timeSpan.TotalSeconds, 1e-3);
6969
}
7070

7171
[Test]
@@ -111,5 +111,101 @@ public static void DateTimeMinusDurationReturnsDateTime()
111111
DateTime expected = new DateTime(2016, 1, 1);
112112
Assert.AreEqual(expected, result);
113113
}
114+
115+
[Test]
116+
public static void TimeSpanLessThanDurationShouldReturnCorrectly()
117+
{
118+
TimeSpan timeSpan = TimeSpan.FromHours(10);
119+
Duration duration = Duration.FromHours(11);
120+
Assert.IsTrue(timeSpan < duration, "timeSpan should be less than duration");
121+
}
122+
123+
[Test]
124+
public static void TimeSpanGreaterThanDurationShouldReturnCorrectly()
125+
{
126+
TimeSpan timeSpan = TimeSpan.FromHours(12);
127+
Duration duration = Duration.FromHours(11);
128+
Assert.IsTrue(timeSpan > duration, "timeSpan should be greater than duration");
129+
}
130+
131+
[Test]
132+
public static void DurationLessThanTimeSpanShouldReturnCorrectly()
133+
{
134+
TimeSpan timeSpan = TimeSpan.FromHours(11);
135+
Duration duration = Duration.FromHours(10);
136+
Assert.IsTrue(duration < timeSpan, "duration should be less than timeSpan");
137+
}
138+
139+
[Test]
140+
public static void DurationGreaterThanTimeSpanShouldReturnCorrectly()
141+
{
142+
TimeSpan timeSpan = TimeSpan.FromHours(11);
143+
Duration duration = Duration.FromHours(12);
144+
Assert.IsTrue(duration > timeSpan, "duration should be greater than timeSpan");
145+
}
146+
147+
[Test]
148+
public static void TimeSpanLessOrEqualThanDurationShouldReturnCorrectly()
149+
{
150+
TimeSpan timeSpan = TimeSpan.FromHours(10);
151+
Duration duration = Duration.FromHours(11);
152+
Assert.IsTrue(timeSpan <= duration, "timeSpan should be less than duration");
153+
}
154+
155+
[Test]
156+
public static void TimeSpanGreaterThanOrEqualDurationShouldReturnCorrectly()
157+
{
158+
TimeSpan timeSpan = TimeSpan.FromHours(12);
159+
Duration duration = Duration.FromHours(11);
160+
Assert.IsTrue(timeSpan >= duration, "timeSpan should be greater than duration");
161+
}
162+
163+
[Test]
164+
public static void DurationLessThanOrEqualTimeSpanShouldReturnCorrectly()
165+
{
166+
TimeSpan timeSpan = TimeSpan.FromHours(11);
167+
Duration duration = Duration.FromHours(10);
168+
Assert.IsTrue(duration <= timeSpan, "duration should be less than timeSpan");
169+
}
170+
171+
[Test]
172+
public static void DurationGreaterThanOrEqualTimeSpanShouldReturnCorrectly()
173+
{
174+
TimeSpan timeSpan = TimeSpan.FromHours(11);
175+
Duration duration = Duration.FromHours(12);
176+
Assert.IsTrue(duration >= timeSpan, "duration should be greater than timeSpan");
177+
}
178+
179+
[Test]
180+
public static void DurationEqualToTimeSpanShouldReturnCorrectly()
181+
{
182+
TimeSpan timeSpan = TimeSpan.FromHours(11);
183+
Duration duration = Duration.FromHours(11);
184+
Assert.IsTrue(duration == timeSpan, "duration should be equal to timeSpan");
185+
}
186+
187+
[Test]
188+
public static void TimeSpanEqualToDurationShouldReturnCorrectly()
189+
{
190+
TimeSpan timeSpan = TimeSpan.FromHours(11);
191+
Duration duration = Duration.FromHours(11);
192+
Assert.IsTrue(timeSpan == duration, "timeSpan should be equal to duration");
193+
}
194+
195+
[Test]
196+
public static void DurationNotEqualToTimeSpanShouldReturnCorrectly()
197+
{
198+
TimeSpan timeSpan = TimeSpan.FromHours(12);
199+
Duration duration = Duration.FromHours(11);
200+
Assert.IsTrue(duration != timeSpan, "duration should not be equal to timeSpan");
201+
}
202+
203+
[Test]
204+
public static void TimeSpanNotEqualToDurationShouldReturnCorrectly()
205+
{
206+
TimeSpan timeSpan = TimeSpan.FromHours(12);
207+
Duration duration = Duration.FromHours(11);
208+
Assert.IsTrue(timeSpan != duration, "timeSpan should not be equal to duration");
209+
}
114210
}
115211
}

UnitsNet/CustomCode/UnitClasses/Duration.extra.cs

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,66 @@ public static explicit operator Duration(TimeSpan duration)
5050
{
5151
return FromSeconds(duration.TotalSeconds);
5252
}
53+
54+
public static bool operator <(Duration duration, TimeSpan timeSpan)
55+
{
56+
return duration.Seconds < timeSpan.TotalSeconds;
57+
}
58+
59+
public static bool operator >(Duration duration, TimeSpan timeSpan)
60+
{
61+
return duration.Seconds > timeSpan.TotalSeconds;
62+
}
63+
64+
public static bool operator <=(Duration duration, TimeSpan timeSpan)
65+
{
66+
return duration.Seconds <= timeSpan.TotalSeconds;
67+
}
68+
69+
public static bool operator >=(Duration duration, TimeSpan timeSpan)
70+
{
71+
return duration.Seconds >= timeSpan.TotalSeconds;
72+
}
73+
74+
public static bool operator ==(Duration duration, TimeSpan timeSpan)
75+
{
76+
return duration.Seconds == timeSpan.TotalSeconds;
77+
}
78+
79+
public static bool operator !=(Duration duration, TimeSpan timeSpan)
80+
{
81+
return duration.Seconds != timeSpan.TotalSeconds;
82+
}
83+
84+
public static bool operator <(TimeSpan timeSpan, Duration duration)
85+
{
86+
return timeSpan.TotalSeconds < duration.Seconds;
87+
}
88+
89+
public static bool operator >(TimeSpan timeSpan, Duration duration)
90+
{
91+
return timeSpan.TotalSeconds > duration.Seconds;
92+
}
93+
94+
public static bool operator <=(TimeSpan timeSpan, Duration duration)
95+
{
96+
return timeSpan.TotalSeconds <= duration.Seconds;
97+
}
98+
99+
public static bool operator >=(TimeSpan timeSpan, Duration duration)
100+
{
101+
return timeSpan.TotalSeconds >= duration.Seconds;
102+
}
103+
104+
public static bool operator ==(TimeSpan timeSpan, Duration duration)
105+
{
106+
return timeSpan.TotalSeconds == duration.Seconds;
107+
}
108+
109+
public static bool operator !=(TimeSpan timeSpan, Duration duration)
110+
{
111+
return timeSpan.TotalSeconds != duration.Seconds;
112+
}
53113
#endif
54114

55115
/// <summary>

0 commit comments

Comments
 (0)