ribosome-0.9.9.9: test/Ribosome/Test/WatcherTest.hs
module Ribosome.Test.WatcherTest where
import Conc (interpretAtomic)
import Data.MessagePack (Object)
import Polysemy.Test (UnitTest, (===))
import Ribosome.Api.Autocmd (doautocmd)
import Ribosome.Host.Api.Effect (nvimSetVar)
import Ribosome.Host.Data.Report (Report)
import Ribosome.Host.Data.RpcError (RpcError)
import Ribosome.Host.Effect.Rpc (Rpc)
import Ribosome.Test.Wait (assertWait)
import Ribosome.Unit.Run (runTest, testHandlers)
changed ::
Members [AtomicState Int, Rpc !! RpcError, Stop Report] r =>
Object ->
Sem r ()
changed _ =
atomicModify' (+ 1)
test_varWatcher :: UnitTest
test_varWatcher =
runTest $ interpretAtomic 0 $ testHandlers mempty [("trigger", changed)] do
nvimSetVar "trigger" (4 :: Int)
doautocmd "CmdlineLeave"
assertWait atomicGet ((1 :: Int) ===)
nvimSetVar "trigger" (5 :: Int)
doautocmd "CmdlineLeave"
doautocmd "CmdlineLeave"
doautocmd "CmdlineLeave"
assertWait atomicGet ((2 :: Int) ===)
nvimSetVar "trigger" (6 :: Int)
doautocmd "CmdlineLeave"
assertWait atomicGet ((3 :: Int) ===)