После попытки ввода неудачных модульных тестов, чтобы доказать эту ошибку, мне было трудно воспроизвести.
Сравнение ZonedDateTime
s с BclDateTimeZone
s на разных смещениях не является проблемой. Сравнение ZonedDateTime
s с различными LocalDateTime
s не является проблемой.
Я мог видеть из источника, что сравнение ZonedDateTime
Zone
только входило в игру, если LocalDateTime
и Offset
были равны.
Моя проблема возникла, когда я использовал две разные ссылки BclDateTimeZone
на том же самом расстоянии. Я сделал это, используя DateTimeZoneProviders.Bcl.GetSystemDefault()
в одном месте и BclDateTimeZone.ForSystemDefault()
в другом. Излишне говорить, что теперь они вызывают общий код.
Я это провал тест, где я сравниваю два ZonedDateTime
сек с различными DateTimeZone
с на то же смещение:
ZonedDateTime dtzOne = new ZonedDateTime(Instant.FromUtc(2014, 11, 11, 21, 00), DateTimeZoneProviders.Bcl.GetZoneOrNull("Greenwich Standard Time"));
ZonedDateTime dtzTwo = new ZonedDateTime(Instant.FromUtc(2014, 11, 11, 21, 00), DateTimeZoneProviders.Bcl.GetZoneOrNull("GMT Standard Time"));
Assert.That(dtzOne, Is.Not.EqualTo(dtzTwo));
Этот тест генерирует исключение здесь:
System.NotImplementedException : The method or operation is not implemented.
at NodaTime.TimeZones.BclDateTimeZone.EqualsImpl(DateTimeZone zone)
at NodaTime.DateTimeZone.Equals(DateTimeZone obj)
at NodaTime.ZonedDateTime.Equals(ZonedDateTime other)
я могу легко работать вокруг этой проблемы, но это, вероятно, стоит исправить.
Бросок «NotImplementedException» определенно не является _bug_, особенно если он задокументирован. –
Не задокументировано, что мой 'ZonedDateTime' может генерировать исключение при проверке равенства. –