doxygen-parser-0.1.0: test/Test/Doxygen/Parser/SimpleSect.hs
{-# LANGUAGE LambdaCase #-}
module Test.Doxygen.Parser.SimpleSect (tests) where
import Data.Text (Text)
import Data.Text qualified as Text
import Test.Tasty
import Test.Tasty.HUnit
import Doxygen.Parser
import Test.Doxygen.Parser.Helpers
tests :: [TestTree]
tests =
[ mkSimpleSectTest "return" SSReturn
, mkSimpleSectTest "warning" SSWarning
, mkSimpleSectTest "note" SSNote
, mkSimpleSectTest "see" SSSee
, mkSimpleSectTest "since" SSSince
, mkSimpleSectTest "version" SSVersion
, mkSimpleSectTest "pre" SSPre
, mkSimpleSectTest "post" SSPost
, mkSimpleSectTest "deprecated" SSDeprecated
, mkSimpleSectTest "remark" SSRemark
, mkSimpleSectTest "attention" SSAttention
, mkSimpleSectTest "todo" SSTodo
, mkSimpleSectTest "invariant" SSInvariant
, mkSimpleSectTest "author" SSAuthor
, mkSimpleSectTest "date" SSDate
, testCase "par with title" $
blockShouldMatch
("<simplesect kind=\"par\">"
<> "<title>My Title</title>"
<> "<para>Content</para>"
<> "</simplesect>") $
\case
SimpleSect (SSPar title) _ -> title @?= "My Title"
b -> assertFailure $ "expected SSPar: " ++ show b
, testCase "unknown kind defaults to SSNote with warning" $ do
let (ws, bs) = parseBlockFromXML
(wrap "<simplesect kind=\"bogus\"><para>X</para></simplesect>")
case ws of
[w] -> do
w.context @?= UnknownSectKind
w.degradation @?= DefaultedTo "Note"
_ -> assertFailure $ "expected 1 warning, got: " ++ show ws
case bs of
[SimpleSect SSNote _] -> pure ()
_ -> assertFailure $ "expected SSNote: " ++ show bs
, testCase "missing kind defaults to SSNote with warning" $ do
let (ws, bs) = parseBlockFromXML
(wrap "<simplesect><para>X</para></simplesect>")
case ws of
[w] -> w.context @?= UnknownSectKind
_ -> assertFailure $ "expected 1 warning, got: " ++ show ws
case bs of
[SimpleSect SSNote _] -> pure ()
_ -> assertFailure $ "expected SSNote: " ++ show bs
]
mkSimpleSectTest :: Text -> SimpleSectKind -> TestTree
mkSimpleSectTest kindAttr expected =
testCase (Text.unpack kindAttr) $
blockShouldMatch
("<simplesect kind=\"" <> kindAttr <> "\"><para>Content</para></simplesect>") $
\case
SimpleSect k _ -> k @?= expected
b -> assertFailure $ "expected simplesect: " ++ show b