wetter.com state can iterate over its hour states
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Fri, 27 May 2016 05:29:07 +0000 (07:29 +0200)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Fri, 27 May 2016 05:30:48 +0000 (07:30 +0200)
src/main/kotlin/net/pterodactylus/rhynodge/webpages/weather/wettercom/WetterComState.kt
src/test/kotlin/net/pterodactylus/rhynodge/webpages/weather/wettercom/WetterComStateTest.kt

index 1181406..59147eb 100644 (file)
@@ -8,7 +8,7 @@ import java.time.ZonedDateTime
  *
  * @author [David ‘Bombe’ Roden](mailto:bombe@pterodactylus.net)
  */
-class WetterComState(val dateTime: ZonedDateTime) : AbstractState(true) {
+class WetterComState(val dateTime: ZonedDateTime) : AbstractState(true), Iterable<HourState> {
 
     val hours: List<HourState> = mutableListOf()
 
@@ -16,6 +16,10 @@ class WetterComState(val dateTime: ZonedDateTime) : AbstractState(true) {
         (hours as MutableList<HourState>).add(hourState)
     }
 
+    override fun iterator(): Iterator<HourState> {
+        return hours.iterator()
+    }
+
     override fun equals(other: Any?): Boolean {
         other as? WetterComState ?: return false
         return (dateTime == other.dateTime) and (hours == other.hours)
index c67b82b..e6ab943 100644 (file)
@@ -34,4 +34,13 @@ class WetterComStateTest {
         assertThat(firstState, `is`(secondState))
     }
 
+    @Test
+    fun iteratingDeliversHourStates() {
+        val now = Instant.now().atZone(ZoneId.of("UTC"))
+        val firstState = WetterComState(ZonedDateTime.from(now))
+        firstState.addHour(HourState(0, 10.0, 0.05, 0.0, WindDirection.NORTH, 5.0, "Fine", "http://1"))
+        firstState.addHour(HourState(1, 12.0, 0.1, 2.0, WindDirection.WEST, 8.0, "Superb", "http://2"))
+        assertThat(firstState.iterator().asSequence().toList(), `is`(firstState.hours as Iterable<HourState>))
+    }
+
 }