content: {-# LANGUAGE OverloadedStrings #-}
  module Tests.Writers.TEI (tests) where
  
  import Test.Tasty
  import Test.Tasty.HUnit (HasCallStack)
  import Tests.Helpers
  import Text.Pandoc
  import Text.Pandoc.Arbitrary ()
  import Text.Pandoc.Builder
  
  {-
    "my test" =: X =?> Y
  
  is shorthand for
  
    test html "my test" $ X =?> Y
  
  which is in turn shorthand for
  
    test html "my test" (X,Y)
  -}
  
  infix 4 =:
  (=:) :: (ToString a, ToPandoc a, HasCallStack)
       => String -> (a, String) -> TestTree
  (=:) = test (purely (writeTEI def) . toPandoc)
  
  tests :: [TestTree]
  tests = [ testGroup "block elements"
            ["para"          =: para "Lorem ipsum cetera."
                             =?> "<p>Lorem ipsum cetera.</p>"
            ]
          , testGroup "inlines"
            [
              "Emphasis"      =:  emph "emphasized"
                              =?> "<p><hi rendition=\"simple:italic\">emphasized</hi></p>"
             ,"SingleQuoted"  =:  singleQuoted (text "quoted material")
                              =?> "<p><quote>quoted material</quote></p>"
             ,"DoubleQuoted"  =:  doubleQuoted (text "quoted material")
                              =?> "<p><quote>quoted material</quote></p>"
             ,"NestedQuoted"  =:  doubleQuoted (singleQuoted (text "quoted material"))
                              =?> "<p><quote><quote>quoted material</quote></quote></p>"
            ]
           ]
  