parent
f7c559e057
commit
03375a7eff
2 changed files with 12 additions and 1 deletions
|
|
@ -106,7 +106,7 @@ import scala.reflect.ClassTag
|
||||||
override def startSingleTimer(key: Any, msg: T, delay: FiniteDuration): Unit =
|
override def startSingleTimer(key: Any, msg: T, delay: FiniteDuration): Unit =
|
||||||
startTimer(key, msg, delay, Effect.TimerScheduled.SingleMode)
|
startTimer(key, msg, delay, Effect.TimerScheduled.SingleMode)
|
||||||
|
|
||||||
override def isTimerActive(key: Any): Boolean = ???
|
override def isTimerActive(key: Any): Boolean = activeTimers.isDefinedAt(key)
|
||||||
|
|
||||||
override def cancel(key: Any): Unit = if (activeTimers.keySet(key)) {
|
override def cancel(key: Any): Unit = if (activeTimers.keySet(key)) {
|
||||||
val effect = Effect.TimerCancelled(key)
|
val effect = Effect.TimerCancelled(key)
|
||||||
|
|
|
||||||
|
|
@ -49,6 +49,7 @@ object BehaviorTestKitSpec {
|
||||||
case class ScheduleCommand(key: Any, delay: FiniteDuration, mode: Effect.TimerScheduled.TimerMode, cmd: Command)
|
case class ScheduleCommand(key: Any, delay: FiniteDuration, mode: Effect.TimerScheduled.TimerMode, cmd: Command)
|
||||||
extends Command
|
extends Command
|
||||||
case class CancelScheduleCommand(key: Any) extends Command
|
case class CancelScheduleCommand(key: Any) extends Command
|
||||||
|
case class IsTimerActive(key: Any, replyTo: ActorRef[Boolean]) extends Command
|
||||||
|
|
||||||
val init: Behavior[Command] = Behaviors.withTimers { timers =>
|
val init: Behavior[Command] = Behaviors.withTimers { timers =>
|
||||||
Behaviors
|
Behaviors
|
||||||
|
|
@ -134,6 +135,9 @@ object BehaviorTestKitSpec {
|
||||||
case CancelScheduleCommand(key) =>
|
case CancelScheduleCommand(key) =>
|
||||||
timers.cancel(key)
|
timers.cancel(key)
|
||||||
Behaviors.same
|
Behaviors.same
|
||||||
|
case IsTimerActive(key, replyTo) =>
|
||||||
|
replyTo ! timers.isTimerActive(key)
|
||||||
|
Behaviors.same
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.receiveSignal {
|
.receiveSignal {
|
||||||
|
|
@ -408,6 +412,9 @@ class BehaviorTestKitSpec extends AnyWordSpec with Matchers with LogCapturing {
|
||||||
"timer support" must {
|
"timer support" must {
|
||||||
"schedule and cancel timers" in {
|
"schedule and cancel timers" in {
|
||||||
val testkit = BehaviorTestKit[Parent.Command](Parent.init)
|
val testkit = BehaviorTestKit[Parent.Command](Parent.init)
|
||||||
|
val t = TestInbox[Boolean]()
|
||||||
|
testkit.run(IsTimerActive("abc", t.ref))
|
||||||
|
t.receiveMessage() shouldBe false
|
||||||
testkit.run(ScheduleCommand("abc", 42.seconds, Effect.TimerScheduled.SingleMode, SpawnChild))
|
testkit.run(ScheduleCommand("abc", 42.seconds, Effect.TimerScheduled.SingleMode, SpawnChild))
|
||||||
testkit.expectEffectPF {
|
testkit.expectEffectPF {
|
||||||
case Effect.TimerScheduled(
|
case Effect.TimerScheduled(
|
||||||
|
|
@ -418,11 +425,15 @@ class BehaviorTestKitSpec extends AnyWordSpec with Matchers with LogCapturing {
|
||||||
false /*not overriding*/ ) =>
|
false /*not overriding*/ ) =>
|
||||||
finiteDuration should equal(42.seconds)
|
finiteDuration should equal(42.seconds)
|
||||||
}
|
}
|
||||||
|
testkit.run(IsTimerActive("abc", t.ref))
|
||||||
|
t.receiveMessage() shouldBe true
|
||||||
testkit.run(CancelScheduleCommand("abc"))
|
testkit.run(CancelScheduleCommand("abc"))
|
||||||
testkit.expectEffectPF {
|
testkit.expectEffectPF {
|
||||||
case Effect.TimerCancelled(key) =>
|
case Effect.TimerCancelled(key) =>
|
||||||
key should equal("abc")
|
key should equal("abc")
|
||||||
}
|
}
|
||||||
|
testkit.run(IsTimerActive("abc", t.ref))
|
||||||
|
t.receiveMessage() shouldBe false
|
||||||
}
|
}
|
||||||
|
|
||||||
"schedule and fire timers" in {
|
"schedule and fire timers" in {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue