https://kotlinlang.org logo
#announcements
Title
# announcements
m

mathew murphy

07/19/2019, 7:45 PM
(Just in case a future Java version changes what ZonedDateTime will parse, or we switch to a different calendar or something...)
d

Dominaezzz

07/19/2019, 7:56 PM
I think Java is backward compatible. Not your job to test that.
r

Ruckus

07/19/2019, 7:57 PM
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

LeoColman

07/19/2019, 8:25 PM
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

Ruckus

07/19/2019, 8:29 PM
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

mathew murphy

07/19/2019, 8:29 PM
The point is to get a ZonedDateTime value I can use in tests, and which isn't nullable.
d

Dominaezzz

07/19/2019, 8:30 PM
Oh I understand now.
r

Ruckus

07/19/2019, 8:31 PM
Ah, sorry, I misunderstood and assumed that was your entire test 🙂
d

Dominaezzz

07/19/2019, 8:31 PM
It's a bit overkill but .... sure I guess.
@Ruckus Ha, same.
😆 1
m

mathew murphy

07/19/2019, 8:33 PM
!!
works too, obviously, but IDEA suggested replacing it
r

Ruckus

07/19/2019, 8:33 PM
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

Dominaezzz

07/19/2019, 8:35 PM
Can
ZonedDateTime
be constructed without parsing? (I guess that doesn't quite solve the problem).
r

Ruckus

07/19/2019, 8:35 PM
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

Dominaezzz

07/19/2019, 8:36 PM
Rip, still platform type in that case.
r

Ruckus

07/19/2019, 8:36 PM
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

Dominaezzz

07/19/2019, 8:39 PM
It's an issue because it brings us back to square one.
r

Ruckus

07/19/2019, 8:40 PM
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

Dominaezzz

07/19/2019, 8:59 PM
The square of whether one should explicitly check the nullability of the returned value.
r

Ruckus

07/19/2019, 9:03 PM
I think platform types are a red herring in that question.
m

mathew murphy

07/19/2019, 9:17 PM
val zdt = ZonedDateTime.of(2019,7,19,14,19,5,0, ZoneId.ofOffset("",ZoneOffset.ofHours(-5)))
So much better 😛
😆 1
d

Dominaezzz

07/19/2019, 9:34 PM
I guess in conclusion, it's more on the unreasonable side of things.
6 Views