From a9318be75e900cf4f87fbe28f274d4fe3661de94 Mon Sep 17 00:00:00 2001 From: Toby Weston Date: Wed, 11 Oct 2017 20:28:07 +0100 Subject: [PATCH] #9 include spiked temperature in output --- .../bad/robot/temperature/ErrorOnTemperatureSpike.scala | 8 ++++---- .../robot/temperature/ErrorOnTemperatureSpikeTest.scala | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/scala/bad/robot/temperature/ErrorOnTemperatureSpike.scala b/src/main/scala/bad/robot/temperature/ErrorOnTemperatureSpike.scala index 248660a..0c0e5a6 100644 --- a/src/main/scala/bad/robot/temperature/ErrorOnTemperatureSpike.scala +++ b/src/main/scala/bad/robot/temperature/ErrorOnTemperatureSpike.scala @@ -40,15 +40,15 @@ class ErrorOnTemperatureSpike(delegate: TemperatureWriter) extends TemperatureWr def write(measurement: Measurement): Error \/ Unit = { - val spiked = measurement.temperatures.filter(current => { + val spiked = measurement.temperatures.flatMap(current => { temperatures.get(current.name) match { - case Some(previous) if spikeBetween(current, previous) => true - case _ => false + case Some(previous) if spikeBetween(current, previous) => List((current.name, previous, current.temperature)) + case _ => Nil } }) if (spiked.nonEmpty) { - -\/(SensorSpikeError(spiked.map(_.name), spiked.map(_.temperature), List())) + -\/(SensorSpikeError(spiked.map(_._1), previous = spiked.map(_._2), current = spiked.map(_._3))) } else { measurement.temperatures.foreach(current => temperatures.update(current.name, current.temperature)) delegate.write(measurement) diff --git a/src/test/scala/bad/robot/temperature/ErrorOnTemperatureSpikeTest.scala b/src/test/scala/bad/robot/temperature/ErrorOnTemperatureSpikeTest.scala index e216751..3bbe9fb 100644 --- a/src/test/scala/bad/robot/temperature/ErrorOnTemperatureSpikeTest.scala +++ b/src/test/scala/bad/robot/temperature/ErrorOnTemperatureSpikeTest.scala @@ -98,8 +98,8 @@ class ErrorOnTemperatureSpikeTest extends Specification { case e: SensorSpikeError => e.message must_== """An unexpected spike was encountered on: | sensor(s) : A - | previous temperatures : 51.1 °C - | spiked temperatures : + | previous temperatures : 21.6 °C + | spiked temperatures : 51.1 °C |""".stripMargin } } @@ -113,8 +113,8 @@ class ErrorOnTemperatureSpikeTest extends Specification { case e: SensorSpikeError => e.message must_== """An unexpected spike was encountered on: | sensor(s) : A1, A2 - | previous temperatures : 51.4 °C, 51.1 °C - | spiked temperatures : + | previous temperatures : 21.1 °C, 21.3 °C + | spiked temperatures : 51.4 °C, 51.1 °C |""".stripMargin } }