From c8f0894256df14e18613a7020e1d67c071acf5a2 Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Tue, 12 Jan 2016 10:38:46 +0100 Subject: unit tests for Text.BBCode --- bbcode/test/Text/BBCodeSpec.hs | 59 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 bbcode/test/Text/BBCodeSpec.hs diff --git a/bbcode/test/Text/BBCodeSpec.hs b/bbcode/test/Text/BBCodeSpec.hs new file mode 100644 index 0000000..0d8949a --- /dev/null +++ b/bbcode/test/Text/BBCodeSpec.hs @@ -0,0 +1,59 @@ +{-# LANGUAGE OverloadedStrings, OverloadedLists #-} + +module Text.BBCodeSpec (spec) where + +import Test.Hspec +import Test.Hspec.QuickCheck (prop) +import Test.QuickCheck.Instances + +import Text.BBCode + +import Data.Text (Text) + +import Control.Monad (zipWithM_) +import Data.Monoid ((<>)) + +spec :: Spec +spec = do + zipWithM_ example [1..] examples + where + example n (s, ts) = let str = "Example " <> show n + in specify str (bbcode s == Right ts) + +examples :: [(Text, [DomTree])] +examples = [ ("[t]test[/t]" + , [Element "t" [] [Content "test"]]) + , ("[t]te\\st[/t]" + , [Element "t" [] [Content "te\\st"]]) + , ("[t]te\\[st[/t]" + , [Element "t" [] [Content "te[st"]]) + , ("[t]test\\\\[/t]" + , [Element "t" [] [Content "test\\"]]) + , ("[\\t]test[/\\t]" + , [Element "\\t" [] [Content "test"]]) + , ("[t attr]test[/t]" + , [Element "t" [("attr", "")] [Content "test"]]) + , ("[t=attr]test[/t]" + , [Element "t" [("", "attr")] [Content "test"]]) + , ("[t attr=val]test[/t]" + , [Element "t" [("attr", "val")] [Content "test"]]) + , ("[t attr=\"val\"]test[/t]" + , [Element "t" [("attr", "val")] [Content "test"]]) + , ("[t attr=\"va]l\"]test[/t]" + , [Element "t" [("attr", "va]l")] [Content "test"]]) + , ("[t attr=\"va\\\"l\"]test[/t]" + , [Element "t" [("attr", "va\"l")] [Content "test"]]) + , ("[t attr=\"val\" attr2=\"val2\" ]test[/t]" + , [Element "t" [("attr", "val"), ("attr2", "val2")] [Content "test"]]) + , ("[br/]" + , [Element "br" [] []]) + , ("[br attr/]" + , [Element "br" [("attr", "")] []]) + , ("[br=val/]" + , [Element "br" [("", "val")] []]) + , ("[br attr=val/]" + , [Element "br" [("attr", "val")] []]) + , ("[br attr=val val2/]" + , [Element "br" [("attr", "val"), ("val2", "")] []]) + ] + -- cgit v1.2.3