packages feed

dzen-dhall-1.0.0: test/DzenDhall/Test/AST/Render.hs

module DzenDhall.Test.AST.Render where

import DzenDhall.AST
import DzenDhall.AST.Render
import DzenDhall.Data
import DzenDhall.Config

import Test.Hspec
import Test.Tasty
import Test.Tasty.HUnit

asts :: [AST] -> AST
asts = foldr (<>) EmptyAST

getTests :: TestTree
getTests =
  testGroup "DzenDhall.AST.Render"
  [ testGroup "DzenDhall.AST.Render.runRender"
    [ testCase "renders nested colors correctly #0" $ do
        let tree =
              asts [ ASTProp (FG (Color "black")) $
                     ASTText "text"
                   , ASTText "..."
                   ]
        runRender tree `shouldBe` "^fg(black)text^fg()..."
    , testCase "renders nested colors correctly #1" $ do
        let tree =
              ASTProp (FG (Color "black")) $
              ASTProp (FG (Color "white")) $
              ASTText "text"
        runRender tree `shouldBe` "^fg(black)^fg(white)text^fg(black)^fg()"
    , testCase "renders nested colors correctly #2" $ do
        let tree =
              ASTProp (FG (Color "black")) $
              asts [ ASTProp (FG (Color "white")) $
                     ASTText "text1"
                   , ASTText "text1.1"
                   , ASTProp (FG (Color "red")) $
                     ASTText "text2"
                   , ASTText "text3"
                   ]
        runRender tree `shouldBe`
          "^fg(black)^fg(white)text1^fg(black)text1.1^fg(red)text2^fg(black)text3^fg()"

    , testCase "renders nested colors correctly #3" $ do
        let tree =
              ASTProp (FG (Color "red"))
              (ASTs (ASTs (ASTText "a")
                     (ASTProp (FG (Color "green"))
                      (ASTText "b")))
               (ASTText "c"))
        runRender tree `shouldBe` "^fg(red)a^fg(green)b^fg(red)c^fg()"
    ]
  ]