{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE QuasiQuotes #-} module Zenacy.HTML.Internal.HTML.Tests ( testHtml ) where import Zenacy.HTML import Data.Default ( Default(..) ) import Test.Framework ( Test , testGroup ) import Test.Framework.Providers.HUnit ( testCase ) import Test.HUnit ( assertBool , assertEqual , assertFailure ) import Data.Text ( Text ) import qualified Data.Text as T ( pack ) import Text.RawString.QQ testHtml :: Test testHtml = testGroup "Zenacy.HTML.Internal.HTML" [ testBasic , testAA1 , testAA2 , testOmit , testTableSparse , testMath , testScript , testInput , testList , testScriptBeforeHead , testComment , testEntity , testAfterHead ] genNormal x = case htmlParse def x of Left e -> T.pack $ show e Right r -> htmlRender $ htmlResultDocument r genPretty x = case htmlParse def x of Left e -> T.pack $ show e Right r -> htmlRenderPretty $ htmlResultDocument r genEntity x y = case htmlParse (def { htmlOptionIgnoreEntities = y }) x of Left e -> T.pack $ show e Right r -> htmlRender $ htmlResultDocument r testBasic :: Test testBasic = testCase "html basic" $ do assertEqual "TEST 1" htmlPretty $ genPretty htmlIn assertEqual "TEST 2" htmlNormal $ genNormal htmlIn htmlIn = "\ \TITLE\ \

HEY


\ \\ \\ \\ \\ \
MEGADETH
\ \" htmlPretty = "\n\ \\n\ \ \n\ \ TITLE\n\ \ \n\ \ \n\ \

HEY

\n\ \
\n\ \ \n\ \ \n\ \ \n\ \ \n\ \ \n\ \ \n\ \ \n\ \ \n\ \ \n\ \
MEGADETH
\n\ \ \n\ \" htmlNormal = "\ \\ \\ \TITLE\ \\ \\ \

HEY

\ \
\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \
MEGADETH
\ \\ \" testAA1 :: Test testAA1 = testCase "html adoption agency 1" $ do assertEqual "TEST 1" htmlAA1Pretty $ genPretty htmlAA1In assertEqual "TEST 2" htmlAA1Normal $ genNormal htmlAA1In htmlAA1In = "\ \AA Case 1\ \\ \

12345

\ \\ \" htmlAA1Pretty = "\n\ \\n\ \ \n\ \ AA Case 1\n\ \ \n\ \ \n\ \

\n\ \ 1\n\ \ \n\ \ 2\n\ \ 3\n\ \ \n\ \ 4\n\ \ 5\n\ \

\n\ \ \n\ \" htmlAA1Normal = "\ \\ \\ \AA Case 1\ \\ \\ \

\ \1\ \\ \2\ \3\ \\ \4\ \5\ \

\ \\ \" testAA2 :: Test testAA2 = testCase "html adoption agency 2" $ do assertEqual "TEST 1" htmlAA2Pretty $ genPretty htmlAA2In assertEqual "TEST 2" htmlAA2Normal $ genNormal htmlAA2In htmlAA2In = "\ \1

23

\ \" htmlAA2Pretty = "\n\ \\n\ \ \n\ \ \n\ \ 1\n\ \

\n\ \ 2\n\ \ 3\n\ \

\n\ \ \n\ \" htmlAA2Normal = "\ \\ \\ \\ \1\ \

\ \2\ \3\ \

\ \\ \" testOmit :: Test testOmit = testCase "html omit" $ do assertEqual "TEST 1" htmlOmitOut $ genNormal htmlOmitIn1 assertEqual "TEST 2" htmlOmitOut $ genNormal htmlOmitIn2 assertEqual "TEST 3" htmlOmit3Out $ genNormal htmlOmit3In htmlOmitIn1 = "Hello

example.

" htmlOmitIn2 = "Hello

example." htmlOmitOut = "\ \Hello\ \

example.

" htmlOmit3In = "\ \Hello\ \

example." htmlOmit3Out = "\ \Hello\ \

example.

" testTableSparse :: Test testTableSparse = testCase "html table sparse" $ do assertEqual "TEST 1" htmlTableSparseOut $ genNormal htmlTableSparseIn htmlTableSparseIn = "\ \\ \ \ \ \ \ \ \
37547 TEE Electric Powered Rail Car Train Functions\ \
Function Control Unit Central\ \
Headlights ✔\ \
Interior Lights ✔\ \
Electric locomotive sounds ✔\ \
Engineer's cab lighting ✔\ \
Station Announce - Swiss ✔\ \
" htmlTableSparseOut = "\ \\ \\ \ \ \\ \ \ \ \ \\ \\ \\ \\ \\ \ \ \ \ \\ \\ \\ \ \ \\ \\ \\ \ \ \\ \\ \\ \ \ \\ \\ \\ \ \ \\ \\ \
37547 TEE Electric Powered Rail Car Train Functions\ \
Function Control Unit Central
Headlights \10004 \10004
Interior Lights \10004 \10004
Electric locomotive sounds \10004 \10004
Engineer's cab lighting \10004
Station Announce - Swiss \10004
" testMath :: Test testMath = testCase "html math" $ do assertEqual "TEST 1" htmlMathOut $ genNormal htmlMathIn htmlMathIn = "\ \

You can add a string to a number, but this stringifies the number:

\ \\ \x<y\ \+\ \3\ \=\ \x<y3\ \" htmlMathOut = "\ \\ \

You can add a string to a number, but this stringifies the number:

\ \\ \x<y\ \+3=\ \x<y3\ \" testScript :: Test testScript = testCase "html script" $ do assertEqual "TEST 1" htmlScript1Out $ genNormal htmlScript1In assertEqual "TEST 2" htmlScript2Out $ genNormal htmlScript2In assertEqual "TEST 3" htmlScript3Out $ genNormal htmlScript3In assertEqual "TEST 4" htmlScript4Out $ genNormal htmlScript4In htmlScript1In = "\ \" htmlScript1Out = "\ \\ \\ \\ \\ \\ \" htmlScript2In = "\ \
\ \\ \\ \
\ \" htmlScript2Out = "\ \\ \
\ \\ \\ \
\ \\ \" htmlScript3In = "\ \" htmlScript3Out = "\ \\ \\ \" htmlScript4In = [r||] htmlScript4Out = [r||] testInput :: Test testInput = testCase "html input" $ do assertEqual "TEST 1" htmlInputOut $ genNormal htmlInputIn htmlInputIn = "\ \\ \\ \\ \" htmlInputOut = "\ \\ \\ \\ \\ \\ \" testList :: Test testList = testCase "html list" $ do assertEqual "TEST 1" htmlList1Out $ genNormal htmlList1In htmlList1In = "\ \" htmlList1Out = "\ \\ \\ \" testScriptBeforeHead :: Test testScriptBeforeHead = testCase "html script before head" $ do assertEqual "TEST 1" htmlScriptBeforeHeadOut $ genNormal htmlScriptBeforeHeadIn htmlScriptBeforeHeadIn = "\ \\ \\ \\ \" htmlScriptBeforeHeadOut = "\ \\ \\ \\ \\ \\ \" testComment :: Test testComment = testCase "html comment" $ do assertEqual "TEST 1" htmlCommentOut $ genNormal htmlCommentIn htmlCommentIn = "\ \\ \\ \" htmlCommentOut = "\ \\ \\ \\ \\ \" testEntity :: Test testEntity = testCase "html entity" $ do assertEqual "TEST 1" htmlEntity1Out $ genEntity htmlEntity1In False assertEqual "TEST 2" htmlEntity2Out $ genEntity htmlEntity1In True assertEqual "TEST 3" htmlEntityNum1Out $ genEntity htmlEntityNumIn False assertEqual "TEST 4" htmlEntityNum2Out $ genEntity htmlEntityNumIn True htmlEntity1In = "\ \

&

" htmlEntity1Out = "\ \\ \\ \\ \\ \

&

\ \\ \" htmlEntity2Out = "\ \\ \\ \\ \\ \

&

\ \\ \" htmlEntityNumIn = "

−Δ 

" htmlEntityNum1Out = "\ \

\8722\916 

" htmlEntityNum2Out = "\ \

−Δ 

" testAfterHead :: Test testAfterHead = testCase "html after head" $ do assertEqual "TEST 1" htmlAfterHead1Out $ genNormal htmlAfterHead1In htmlAfterHead1In = "\ \\ \\ \\ \\ \\ \\ \" htmlAfterHead1Out = "\ \\ \\ \\ \\ \\ \\ \"