{-# LANGUAGE TypeOperators #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE DataKinds #-} module Main where import Html import Test.Hspec import Data.Proxy import qualified Data.Text as T import qualified Data.Text.Lazy as LT import qualified Data.Text.Lazy.Builder as LT main :: IO () main = hspec spec spec :: Spec spec = let {-# INLINE allT #-} allT a b c = b (render a, render a, render a , render a ) (c , T.pack c, LT.pack c, LT.fromString c) in parallel $ do describe "render" $ do it "is id on empty string" $ do allT "" shouldBe "" it "handles single elements" $ do allT (div_ "a") shouldBe "
a
" it "handles nested elements" $ do allT (div_ (div_ "a")) shouldBe "
a
" it "handles parallel elements" $ do allT (div_ "a" # div_ "b") shouldBe "
a
b
" it "doesn't use closing tags for empty elements" $ do allT area_ shouldBe "" allT base_ shouldBe "" allT br_ shouldBe "
" allT col_ shouldBe "" allT embed_ shouldBe "" allT hr_ shouldBe "
" allT iframe_ shouldBe "