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