(Just in case a future Java version changes what Z...
# announcements
m
(Just in case a future Java version changes what ZonedDateTime will parse, or we switch to a different calendar or something...)
d
I think Java is backward compatible. Not your job to test that.
r
If that's the case, you have much bigger problems you need to worry about. You should be testing your code. If you can't trust the underlying standard library of your language, you either shouldn't be using that language, or you have some serious trust issues you need to work out.
(That may have been overly facetious. @Dominaezzz's answer is exactly right. It's not your job)
l
I think it's valid if you don't know the string to be parsed
As it might be invalid, and
parse
might return null
r
There are 2 problems with that. 1. If you don't know the string to be parsed, that's already not a good test 2. This question was worded to suggest @mathew murphy is testing for breaking changes in
java.time
APIs, and not if they are being used correctly.
m
The point is to get a ZonedDateTime value I can use in tests, and which isn't nullable.
d
Oh I understand now.
r
Ah, sorry, I misunderstood and assumed that was your entire test 🙂
d
It's a bit overkill but .... sure I guess.
@Ruckus Ha, same.
😆 1
m
!!
works too, obviously, but IDEA suggested replacing it
r
In that case, you shouldn't need the the
fail
clause. It should return a platform type, which is safe to treat as not nullable.
d
Can
ZonedDateTime
be constructed without parsing? (I guess that doesn't quite solve the problem).
r
If you don't like the platform type, just specify the type:
Copy code
val zdt: ZonedDateTime = ZonedDateTime.parse("2019-07-19T14:19:05-05:00")
Yes, use
ZonedDateTime.of(...)
d
Rip, still platform type in that case.
r
Why is that an issue?
The whole point of platform types is that Kotlin can't guarantee nullability one way or the other, so it leaves it up to you. In this case, it's perfectly reasonable for you to assume it's not.
d
It's an issue because it brings us back to square one.
r
What square is that? As far as I understand, square 1 was whether or not human reckoning of time is going to drastically change any time soon (no pun intended), which is in no way related to platform types...
d
The square of whether one should explicitly check the nullability of the returned value.
r
I think platform types are a red herring in that question.
m
val zdt = ZonedDateTime.of(2019,7,19,14,19,5,0, ZoneId.ofOffset("",ZoneOffset.ofHours(-5)))
So much better 😛
😆 1
d
I guess in conclusion, it's more on the unreasonable side of things.