1 package net.pterodactylus.rhynodge.webpages.weather.wetterde
3 import com.fasterxml.jackson.databind.ObjectMapper
4 import net.pterodactylus.rhynodge.webpages.weather.HourState
5 import net.pterodactylus.rhynodge.webpages.weather.WindDirection
6 import org.hamcrest.MatcherAssert.assertThat
7 import org.hamcrest.Matchers.`is`
9 import java.time.ZoneId.of
10 import java.time.ZonedDateTime
13 * Unit test for [WetterDeState].
15 * @author [David ‘Bombe’ Roden](mailto:bombe@pterodactylus.net)
17 class WetterDeStateTest {
19 private val now = ZonedDateTime.now(of("Europe/Berlin"))
22 fun statesWithTheSameDateAndHoursAreEqual() {
23 val firstState = WetterDeState(now)
24 firstState += createHourState(0)
25 firstState += createHourState(1)
26 val secondState = WetterDeState(now)
27 secondState += createHourState(0)
28 secondState += createHourState(1)
29 assertThat(firstState, `is`(secondState))
32 private fun createHourState(hourIndex: Int): HourState {
37 (50 + hourIndex) / 100.0,
39 WindDirection.values().get(hourIndex % WindDirection.values().size),
42 (40 + hourIndex) / 100.0,
49 fun stateIsSerializableAsJson() {
50 val originalState = WetterDeState(now)
51 originalState += createHourState(0)
52 originalState += createHourState(1)
53 val json = ObjectMapper().writeValueAsString(originalState)
54 val parsedState = ObjectMapper().readValue(json, WetterDeState::class.java)
55 assertThat(parsedState, `is`(originalState))