module Ribosome.Test.Ui where import Hedgehog (TestT, (===)) import Ribosome.Api.Window (currentCursor, cursor) import Ribosome.Control.Monad.Ribo (NvimE) import Ribosome.Nvim.Api.Data (Window) import Ribosome.Nvim.Api.IO (nvimListWins) windowCountIs :: NvimE e m => Int -> TestT m () windowCountIs :: Int -> TestT m () windowCountIs Int count = do [Window] wins <- TestT m [Window] forall (m :: * -> *) e. (Nvim m, MonadDeepError e RpcError m) => m [Window] nvimListWins Int count Int -> Int -> TestT m () forall (m :: * -> *) a. (MonadTest m, Eq a, Show a, HasCallStack) => a -> a -> m () === ([Window] -> Int forall (t :: * -> *) a. Foldable t => t a -> Int length [Window] wins) cursorIs :: NvimE e m => Int -> Int -> Window -> TestT m () cursorIs :: Int -> Int -> Window -> TestT m () cursorIs Int line Int col = ((Int line, Int col) (Int, Int) -> (Int, Int) -> TestT m () forall (m :: * -> *) a. (MonadTest m, Eq a, Show a, HasCallStack) => a -> a -> m () ===) ((Int, Int) -> TestT m ()) -> (Window -> TestT m (Int, Int)) -> Window -> TestT m () forall (m :: * -> *) b c a. Monad m => (b -> m c) -> (a -> m b) -> a -> m c <=< m (Int, Int) -> TestT m (Int, Int) forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (m (Int, Int) -> TestT m (Int, Int)) -> (Window -> m (Int, Int)) -> Window -> TestT m (Int, Int) forall b c a. (b -> c) -> (a -> b) -> a -> c . Window -> m (Int, Int) forall e (m :: * -> *). NvimE e m => Window -> m (Int, Int) cursor currentCursorIs :: NvimE e m => Int -> Int -> TestT m () currentCursorIs :: Int -> Int -> TestT m () currentCursorIs Int line Int col = ((Int line, Int col) (Int, Int) -> (Int, Int) -> TestT m () forall (m :: * -> *) a. (MonadTest m, Eq a, Show a, HasCallStack) => a -> a -> m () ===) ((Int, Int) -> TestT m ()) -> TestT m (Int, Int) -> TestT m () forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b =<< m (Int, Int) -> TestT m (Int, Int) forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift m (Int, Int) forall e (m :: * -> *). NvimE e m => m (Int, Int) currentCursor