nvim-hs-0.2.0: test-suite/Neovim/EmbeddedRPCSpec.hs
{-# LANGUAGE LambdaCase #-}
module Neovim.EmbeddedRPCSpec
where
import Test.Hspec
import Test.HUnit
import Neovim
import Neovim.Test
import qualified Neovim.Context.Internal as Internal
import Neovim.Quickfix
import Neovim.RPC.Common
import Neovim.RPC.EventHandler
import Neovim.RPC.FunctionCall (atomically')
import Neovim.RPC.SocketReader
import Control.Concurrent
import Control.Concurrent.STM
import Control.Monad.Reader (runReaderT)
import Control.Monad.State (runStateT)
import Control.Monad.Trans.Resource (runResourceT)
import qualified Data.Map as Map
import System.Directory
import System.Exit (ExitCode (..))
import System.IO (hClose)
import System.Process
spec :: Spec
spec = parallel $ do
let helloFile = "test-files/hello"
withNeovimEmbedded f a = testWithEmbeddedNeovim f (Seconds 3) () () a
describe "Read hello test file" .
it "should match 'Hello, World!'" . withNeovimEmbedded (Just helloFile) $ do
bs <- vim_get_buffers
l <- vim_get_current_line'
liftIO $ l `shouldBe` "Hello, World!"
liftIO $ length bs `shouldBe` 1
describe "New empty buffer test" $ do
it "should contain the test text" . withNeovimEmbedded Nothing $ do
cl0 <- vim_get_current_line'
liftIO $ cl0 `shouldBe` ""
bs <- vim_get_buffers'
liftIO $ length bs `shouldBe` 1
let testContent = "Test on empty buffer"
vim_set_current_line testContent
cl1 <- vim_get_current_line'
liftIO $ cl1 `shouldBe` testContent
it "should create a new buffer" . withNeovimEmbedded Nothing $ do
bs0 <- vim_get_buffers'
liftIO $ length bs0 `shouldBe` 1
vim_command "new"
bs1 <- vim_get_buffers'
liftIO $ length bs1 `shouldBe` 2
vim_command "new"
bs2 <- vim_get_buffers'
liftIO $ length bs2 `shouldBe` 3
it "should set the quickfix list" . withNeovimEmbedded Nothing $ do
let q = quickfixListItem (Left 1) (Left 0) :: QuickfixListItem String
setqflist [q] Replace
Right q' <- vim_eval "getqflist()"
liftIO $ fromObjectUnsafe q' `shouldBe` [q]