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 =
|
||||
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)) {
|
||||
val effect = Effect.TimerCancelled(key)
|
||||
|
|
|
|||
|
|
@ -49,6 +49,7 @@ object BehaviorTestKitSpec {
|
|||
case class ScheduleCommand(key: Any, delay: FiniteDuration, mode: Effect.TimerScheduled.TimerMode, cmd: Command)
|
||||
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 =>
|
||||
Behaviors
|
||||
|
|
@ -134,6 +135,9 @@ object BehaviorTestKitSpec {
|
|||
case CancelScheduleCommand(key) =>
|
||||
timers.cancel(key)
|
||||
Behaviors.same
|
||||
case IsTimerActive(key, replyTo) =>
|
||||
replyTo ! timers.isTimerActive(key)
|
||||
Behaviors.same
|
||||
}
|
||||
}
|
||||
.receiveSignal {
|
||||
|
|
@ -408,6 +412,9 @@ class BehaviorTestKitSpec extends AnyWordSpec with Matchers with LogCapturing {
|
|||
"timer support" must {
|
||||
"schedule and cancel timers" in {
|
||||
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.expectEffectPF {
|
||||
case Effect.TimerScheduled(
|
||||
|
|
@ -418,11 +425,15 @@ class BehaviorTestKitSpec extends AnyWordSpec with Matchers with LogCapturing {
|
|||
false /*not overriding*/ ) =>
|
||||
finiteDuration should equal(42.seconds)
|
||||
}
|
||||
testkit.run(IsTimerActive("abc", t.ref))
|
||||
t.receiveMessage() shouldBe true
|
||||
testkit.run(CancelScheduleCommand("abc"))
|
||||
testkit.expectEffectPF {
|
||||
case Effect.TimerCancelled(key) =>
|
||||
key should equal("abc")
|
||||
}
|
||||
testkit.run(IsTimerActive("abc", t.ref))
|
||||
t.receiveMessage() shouldBe false
|
||||
}
|
||||
|
||||
"schedule and fire timers" in {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue