Skip to content

Commit

Permalink
Refactor tests and add tests for outOftries logic
Browse files Browse the repository at this point in the history
  • Loading branch information
lenguyenthanh committed Nov 16, 2023
1 parent aba5bba commit 3fdcaac
Showing 1 changed file with 36 additions and 11 deletions.
47 changes: 36 additions & 11 deletions app/src/test/scala/ExecutorTest.scala
Original file line number Diff line number Diff line change
Expand Up @@ -28,26 +28,31 @@ object ExecutorTest extends SimpleIOSuite with Checkers:

val key = ClientKey("key")

val acquiredKey = MoveDb.Acquire(key)

val validMove = Fishnet.PostMove(Fishnet.Fishnet(key), Fishnet.MoveResult("e2e4"))
val invalidMove = Fishnet.PostMove(Fishnet.Fishnet(key), Fishnet.MoveResult("ee4"))

test("acqurired => none"):
for
executor <- createExecutor()
acquired <- executor.acquire(MoveDb.Acquire(ClientKey("key")))
acquired <- executor.acquire(acquiredKey)
yield assert(acquired.isEmpty)

test("add => acqurired => work.some"):
for
executor <- createExecutor()
_ <- executor.add(work)
acquiredOption <- executor.acquire(MoveDb.Acquire(ClientKey("key")))
acquiredOption <- executor.acquire(acquiredKey)
acquired = acquiredOption.get
yield assert(acquired.acquired.get.clientKey == key) `and` assert(acquired.copy(acquired = None) == work)

test("add => acqurired => acquired => none"):
for
executor <- createExecutor()
_ <- executor.add(work)
_ <- executor.acquire(MoveDb.Acquire(ClientKey("key")))
acquired <- executor.acquire(MoveDb.Acquire(ClientKey("key")))
_ <- executor.acquire(acquiredKey)
acquired <- executor.acquire(acquiredKey)
yield assert(acquired.isEmpty)

test("add => acqurired => move => done"):
Expand All @@ -56,8 +61,8 @@ object ExecutorTest extends SimpleIOSuite with Checkers:
client = createLilaClient(ref)
executor <- Executor.instance(client)
_ <- executor.add(work)
_ <- executor.acquire(MoveDb.Acquire(ClientKey("key")))
_ <- executor.move(workId, Fishnet.PostMove(Fishnet.Fishnet(key), Fishnet.MoveResult("e2e4")))
_ <- executor.acquire(acquiredKey)
_ <- executor.move(workId, validMove)
move <- ref.get.map(_.head)
yield assert(move == Lila.Move(work.game, chess.format.Uci.Move("e2e4").get))

Expand All @@ -67,8 +72,8 @@ object ExecutorTest extends SimpleIOSuite with Checkers:
client = createLilaClient(ref)
executor <- Executor.instance(client)
_ <- executor.add(work)
_ <- executor.acquire(MoveDb.Acquire(ClientKey("key")))
_ <- executor.move(workId, Fishnet.PostMove(Fishnet.Fishnet(key), Fishnet.MoveResult("ee4")))
_ <- executor.acquire(acquiredKey)
_ <- executor.move(workId, invalidMove)
moves <- ref.get
yield assert(moves.isEmpty)

Expand All @@ -78,14 +83,34 @@ object ExecutorTest extends SimpleIOSuite with Checkers:
client = createLilaClient(ref)
executor <- Executor.instance(client)
_ <- executor.add(work)
_ <- executor.acquire(MoveDb.Acquire(ClientKey("key")))
_ <- executor.move(workId, Fishnet.PostMove(Fishnet.Fishnet(key), Fishnet.MoveResult("ee4")))
acquiredOption <- executor.acquire(MoveDb.Acquire(ClientKey("key")))
_ <- executor.acquire(acquiredKey)
_ <- executor.move(workId, invalidMove)
acquiredOption <- executor.acquire(acquiredKey)
acquired = acquiredOption.get
yield assert(acquired.acquired.get.clientKey == key) `and` assert(acquired.tries == 1) `and` assert(
acquired.copy(acquired = None, tries = 0) == work
)

test("should not give up after 3 tries"):
for
ref <- Ref.of[IO, List[Lila.Move]](Nil)
client = createLilaClient(ref)
executor <- Executor.instance(client)
_ <- executor.add(work)
_ <- (executor.acquire(acquiredKey) >> executor.move(workId, invalidMove)).replicateA_(3)
acquired <- executor.acquire(acquiredKey)
yield assert(acquired.isDefined)

test("should give up after 4 tries"):
for
ref <- Ref.of[IO, List[Lila.Move]](Nil)
client = createLilaClient(ref)
executor <- Executor.instance(client)
_ <- executor.add(work)
_ <- (executor.acquire(acquiredKey) >> executor.move(workId, invalidMove)).replicateA_(4)
acquired <- executor.acquire(acquiredKey)
yield assert(acquired.isEmpty)

def createExecutor(): IO[Executor] =
createLilaClient.flatMap(Executor.instance)

Expand Down

0 comments on commit 3fdcaac

Please sign in to comment.