packages feed

ribosome-root-0.3.0.0: test/u/SyntaxSpec.hs

{-# LANGUAGE TemplateHaskell #-}
{-# OPTIONS_GHC -F -pgmF htfpp #-}

module SyntaxSpec(
  htf_thisModulesTests,
) where

import Chiasma.Data.TmuxError (TmuxError)
import Chiasma.Test.Tmux (TmuxTestConf(..))
import Data.DeepPrisms (deepPrisms)
import Data.Default (def)
import Test.Framework

import Ribosome.Api.Buffer (setCurrentBufferContent)
import Ribosome.Api.Syntax (executeSyntax)
import Ribosome.Control.Monad.Ribo (Ribo)
import Ribosome.Data.Syntax (
  Syntax(Syntax),
  syntaxHighlight,
  syntaxMatch,
  )
import Ribosome.Error.Report.Class (ReportError(..))
import Ribosome.System.Time (sleep)
import Ribosome.Test.Embed (defaultTestConfig)
import Ribosome.Test.Screenshot (assertScreenshot)
import Ribosome.Test.Tmux (tmuxSpec')
import TestError (TestError)

data SyntaxSpecError =
  Test TestError
  |
  Tmux TmuxError

deepPrisms ''SyntaxSpecError

instance ReportError SyntaxSpecError where
  errorReport _ =
    undefined

syntax :: Syntax
syntax =
  Syntax [syntaxMatch "TestColons" "::"] [syntaxHighlight "TestColons"
    [("cterm", "reverse"), ("ctermfg", "1"), ("gui", "reverse"), ("guifg", "#dc322f")]] []

syntaxSpec :: Ribo () SyntaxSpecError ()
syntaxSpec = do
  setCurrentBufferContent ["function :: String -> Int", "function _ = 5"]
  _ <- executeSyntax syntax
  sleep 0.5
  assertScreenshot "syntax" False 0

test_syntax :: IO ()
test_syntax =
  tmuxSpec' def { ttcWidth = 300, ttcHeight = 51, ttcGui = False } (defaultTestConfig "syntax") def syntaxSpec