brick/tests/Render.hs

40 lines
2.0 KiB
Haskell
Raw Normal View History

2022-07-01 04:54:30 +03:00
{-# LANGUAGE TypeApplications #-}
module Render
2022-07-04 18:47:06 +03:00
( main
2022-07-01 04:54:30 +03:00
)
where
import Brick
import qualified Graphics.Vty as V
import Brick.Widgets.Border (hBorder)
2022-07-04 03:40:00 +03:00
import Control.Exception (try)
2022-07-01 04:54:30 +03:00
region :: V.DisplayRegion
region = (30, 10)
renderDisplay :: Ord n => [Widget n] -> IO ()
renderDisplay ws = do
2022-07-04 18:46:47 +03:00
outp <- V.outputForConfig V.defaultConfig
ctx <- V.displayContext outp region
V.outputPicture ctx (renderWidget Nothing ws region)
myWidget :: Widget ()
myWidget = str "Why" <=> hBorder <=> str "not?"
2022-07-01 04:54:30 +03:00
2022-07-04 18:46:47 +03:00
-- Since you can't Read a Picture, we have to compare the result with
-- the Shown one
renderedMyWidget :: String
renderedMyWidget = "Picture ?? [VertJoin {partTop = VertJoin {partTop = HorizText {attr = Attr {attrStyle = Default, attrForeColor = Default, attrBackColor = Default, attrURL = Default}, displayText = \"Why \", outputWidth = 30, charWidth = 30}, partBottom = VertJoin {partTop = HorizText {attr = Attr {attrStyle = Default, attrForeColor = Default, attrBackColor = Default, attrURL = Default}, displayText = \"\\9472\\9472\\9472\\9472\\9472\\9472\\9472\\9472\\9472\\9472\\9472\\9472\\9472\\9472\\9472\\9472\\9472\\9472\\9472\\9472\\9472\\9472\\9472\\9472\\9472\\9472\\9472\\9472\\9472\\9472\", outputWidth = 30, charWidth = 30}, partBottom = HorizText {attr = Attr {attrStyle = Default, attrForeColor = Default, attrBackColor = Default, attrURL = Default}, displayText = \"not? \", outputWidth = 30, charWidth = 30}, outputWidth = 30, outputHeight = 2}, outputWidth = 30, outputHeight = 3}, partBottom = BGFill {outputWidth = 30, outputHeight = 7}, outputWidth = 30, outputHeight = 10}] ??"
2022-07-01 04:54:30 +03:00
main :: IO Bool
2022-07-04 18:46:47 +03:00
main = do
result <- try (renderDisplay [myWidget]) :: IO (Either V.VtyConfigurationError ())
case result of
Left _ -> putStrLn "Terminal is not available"
Right () -> return ()
2022-07-04 03:40:00 +03:00
2022-07-04 18:46:47 +03:00
print $ show $ renderWidget Nothing [myWidget] region
2022-07-04 18:46:47 +03:00
return $
show (renderWidget Nothing [myWidget] region) == renderedMyWidget