{-| Description: Copyright: (c) 2020 Samuel May License: MPL-2.0 Maintainer: ag.eitilt@gmail.com Stability: experimental Portability: portable -} module Test.Mangrove.Unit.Tokenize.Tag ( tests ) where import qualified Data.ByteString.Char8 as BS.C import qualified Data.Text as T import qualified Data.Tuple.HT as U.HT import qualified Test.HUnit as U import Test.HUnit ( (~:), (~?=) ) import Web.Mangrove.Parse.Tokenize tests :: U.Test tests = "UTF-8 encoding" ~: U.TestList [ "appropriate end tags allow re-entry" ~: U.TestList $ map stepBreakpoint [ RawTextState , RCDataState , ScriptDataState , ScriptDataEscapedState ] ] stepBreakpoint :: CurrentTokenizerState -> U.Test stepBreakpoint state = show state ~: step' ~?= ([([], EndTag tag)], tokenState', BS.C.pack "") where step = tokenizeStep tokenState $ BS.C.pack "" step' = U.HT.mapSnd3 (tokenizerEncoding (Right $ Just Utf8)) $ step script = T.pack "script" tag = emptyTagParams { tagName = script } tokenState = tokenizerStartTag Nothing script $ tokenizerMode state defaultTokenizerState tokenState' = tokenizerMode DataState tokenState