Add getHighlights
[lsp-test.git] / test / Test.hs
index 6353e09b99ca5b59503bdad8d65bca5e2ee7ecec..a17be20f7f151f725e85c32b3031bb301692b81a 100644 (file)
@@ -7,6 +7,7 @@ import           Test.Hspec
 import           Data.Aeson
 import           Data.Default
 import qualified Data.HashMap.Strict as HM
+import           Data.Maybe
 import qualified Data.Text as T
 import           Control.Applicative.Combinators
 import           Control.Concurrent
@@ -238,6 +239,13 @@ main = hspec $ do
         , mkRange 71 6 71 22
         ]
 
+  describe "getDefinitions" $
+    it "works" $ runSession "hie --lsp" "test/data/renamePass" $ do
+      doc <- openDoc "Desktop/simple.hs" "haskell"
+      let pos = Position 49 25 -- addItem
+      defs <- getDefinitions doc pos
+      liftIO $ defs `shouldBe` [Location (doc ^. uri) (mkRange 28 0 28 7)]
+
   describe "waitForDiagnosticsSource" $
     it "works" $ runSession "hie --lsp" "test/data" $ do
       openDoc "Error.hs" "haskell"
@@ -252,6 +260,20 @@ main = hspec $ do
       rename doc (Position 1 0) "bar"
       documentContents doc >>= liftIO . shouldBe "main = bar\nbar = return 42\n"
 
+  describe "getHover" $
+    it "works" $ runSession "hie --lsp" "test/data/renamePass" $ do
+      doc <- openDoc "Desktop/simple.hs" "haskell"
+      -- hover returns nothing until module is loaded
+      skipManyTill loggingNotification $ count 2 noDiagnostics
+      hover <- getHover doc (Position 45 9) -- putStrLn
+      liftIO $ hover `shouldSatisfy` isJust
+  describe "getHighlights" $
+    it "works" $ runSession "hie --lsp" "test/data/renamePass" $ do
+      doc <- openDoc "Desktop/simple.hs" "haskell"
+      skipManyTill loggingNotification $ count 2 noDiagnostics
+      highlights <- getHighlights doc (Position 27 4) -- addItem
+      liftIO $ length highlights `shouldBe` 4
+
 mkRange sl sc el ec = Range (Position sl sc) (Position el ec)
 
 didChangeCaps :: ClientCapabilities