|
13 | 13 | namespace Ical.Net.Tests; |
14 | 14 |
|
15 | 15 | [TestFixture] |
16 | | -public class CalDateTimeZonedTests |
| 16 | +internal class CalDateTimeZonedTests |
17 | 17 | { |
18 | 18 | #pragma warning disable NUnit2043 // Use ComparisonConstraint for better assertion messages in case of failure |
19 | 19 |
|
@@ -229,11 +229,18 @@ public void CompareTo_Throws_WhenNoTimeZoneExists() |
229 | 229 | { |
230 | 230 | var zonedDt1 = new CalDateTime(2024, 1, 1).AsZoned(); |
231 | 231 | var zonedDt2 = new CalDateTime(2024, 1, 2).AsZoned(); |
232 | | - var zonedDt3 = new CalDateTime(2024, 1, 2, 10, 11, 12).AsZoned(); |
233 | 232 |
|
234 | 233 | Assert.Throws<InvalidOperationException>(() => _ = zonedDt1.CompareTo(zonedDt2)); // Both have no zone |
235 | | - Assert.Throws<InvalidOperationException>(() => _ = zonedDt1.CompareTo(zonedDt3)); // Self has no zone |
236 | | - Assert.Throws<InvalidOperationException>(() => _ = zonedDt3.CompareTo(zonedDt1)); // Other has no zone |
| 234 | + } |
| 235 | + |
| 236 | + [Test] |
| 237 | + public void CompareTo_Throws_WhenOnlyOneHasTimeZone() |
| 238 | + { |
| 239 | + var withZone = new CalDateTime(2024, 1, 2, 10, 11, 12, "UTC").AsZoned(); |
| 240 | + var noZone = new CalDateTime(2024, 1, 2, 10, 11, 12).AsZoned(); |
| 241 | + |
| 242 | + Assert.Throws<InvalidOperationException>(() => _ = withZone.CompareTo(noZone)); |
| 243 | + Assert.Throws<InvalidOperationException>(() => _ = noZone.CompareTo(withZone)); |
237 | 244 | } |
238 | 245 |
|
239 | 246 | [Test] |
@@ -310,13 +317,27 @@ public static System.Collections.IEnumerable LessThanTestCases |
310 | 317 | true |
311 | 318 | ).SetName("LessThan_SameTimeZone"); |
312 | 319 |
|
| 320 | + // Timezone: same |
| 321 | + yield return new TestCaseData( |
| 322 | + new CalDateTime(2025, 1, 2, 12, 0, 0, "UTC").AsZoned(), |
| 323 | + new CalDateTime(2025, 1, 1, 12, 0, 0, "UTC").AsZoned(), |
| 324 | + false |
| 325 | + ).SetName("NotLessThan_SameTimeZone"); |
| 326 | + |
313 | 327 | // Timezone: different |
314 | 328 | yield return new TestCaseData( |
315 | 329 | new CalDateTime(2025, 1, 1, 12, 0, 0, "UTC").AsZoned(), |
316 | 330 | new CalDateTime(2025, 1, 2, 12, 0, 0, "Europe/Vienna").AsZoned(), |
317 | 331 | true |
318 | 332 | ).SetName("LessThan_DifferentTimeZone"); |
319 | 333 |
|
| 334 | + // Timezone: different |
| 335 | + yield return new TestCaseData( |
| 336 | + new CalDateTime(2025, 1, 2, 12, 0, 0, "Europe/Vienna").AsZoned(), |
| 337 | + new CalDateTime(2025, 1, 1, 12, 0, 0, "UTC").AsZoned(), |
| 338 | + false |
| 339 | + ).SetName("NotLessThan_DifferentTimeZone"); |
| 340 | + |
320 | 341 | // self is null, other is not |
321 | 342 | yield return new TestCaseData( |
322 | 343 | null, |
@@ -387,13 +408,27 @@ public static System.Collections.IEnumerable GreaterThanTestCases |
387 | 408 | true |
388 | 409 | ).SetName("GreaterThan_SameTimeZone"); |
389 | 410 |
|
| 411 | + // Timezone: same |
| 412 | + yield return new TestCaseData( |
| 413 | + new CalDateTime(2025, 1, 1, 12, 0, 0, "UTC").AsZoned(), |
| 414 | + new CalDateTime(2025, 1, 2, 12, 0, 0, "UTC").AsZoned(), |
| 415 | + false |
| 416 | + ).SetName("NotGreaterThan_SameTimeZone"); |
| 417 | + |
390 | 418 | // Timezone: different |
391 | 419 | yield return new TestCaseData( |
392 | 420 | new CalDateTime(2025, 1, 2, 12, 0, 0, "Europe/Vienna").AsZoned(), |
393 | 421 | new CalDateTime(2025, 1, 1, 12, 0, 0, "UTC").AsZoned(), |
394 | 422 | true |
395 | 423 | ).SetName("GreaterThan_DifferentTimeZone"); |
396 | 424 |
|
| 425 | + // Timezone: different |
| 426 | + yield return new TestCaseData( |
| 427 | + new CalDateTime(2025, 1, 1, 12, 0, 0, "UTC").AsZoned(), |
| 428 | + new CalDateTime(2025, 1, 2, 12, 0, 0, "Europe/Vienna").AsZoned(), |
| 429 | + false |
| 430 | + ).SetName("NotGreaterThan_DifferentTimeZone"); |
| 431 | + |
397 | 432 | yield return new TestCaseData( |
398 | 433 | null, |
399 | 434 | new CalDateTime(2025, 1, 2, 12, 0, 0, "Europe/Vienna").AsZoned(), |
|
0 commit comments