seonbi-0.3.0: test/Text/Seonbi/Html/LangSpec.hs
{-# LANGUAGE OverloadedLists #-}
{-# LANGUAGE OverloadedStrings #-}
module Text.Seonbi.Html.LangSpec (spec) where
import Test.Hspec
import Text.Seonbi.Html
import Text.Seonbi.Html.Lang
source :: [HtmlEntity]
source =
[ HtmlStartTag
{ tagStack = []
, tag = P
, rawAttributes = "id=\"foo\" lang=\"en\""
}
, HtmlText { tagStack = [P], rawText = "English" }
, HtmlEndTag { tagStack = [], tag = P }
, HtmlStartTag { tagStack = [], tag = Div, rawAttributes = "" }
, HtmlStartTag
{ tagStack = [Div]
, tag = P
, rawAttributes = "class=bar lang=ja"
}
, HtmlStartTag { tagStack = [Div, P], tag = B, rawAttributes = "" }
, HtmlText { tagStack = [Div, P, B], rawText = "日本語" }
, HtmlEndTag { tagStack = [Div, P], tag = B }
, HtmlStartTag
{ tagStack = [Div, P]
, tag = Span
, rawAttributes = "lang='yue-Hant'"
}
, HtmlText { tagStack = [Div, P, Span], rawText = "與" }
, HtmlStartTag { tagStack = [Div, P, Span], tag = B, rawAttributes = "" }
, HtmlText { tagStack = [Div, P, Span, B], rawText = "與粵語" }
, HtmlEndTag { tagStack = [Div, P, Span], tag = B }
, HtmlEndTag { tagStack = [Div, P], tag = Span }
, HtmlEndTag { tagStack = [Div], tag = P }
, HtmlEndTag { tagStack = [], tag = Div }
]
annotated :: [LangHtmlEntity]
annotated =
[ LangHtmlEntity
(Just "en")
HtmlStartTag
{ tagStack = []
, tag = P
, rawAttributes = "id=\"foo\" lang=\"en\""
}
, LangHtmlEntity
(Just "en")
HtmlText { tagStack = [P], rawText = "English" }
, LangHtmlEntity (Just "en") HtmlEndTag { tagStack = [], tag = P }
, LangHtmlEntity
Nothing
HtmlStartTag { tagStack = [], tag = Div, rawAttributes = "" }
, LangHtmlEntity
(Just "ja")
HtmlStartTag
{ tagStack = [Div]
, tag = P
, rawAttributes = "class=bar lang=ja"
}
, LangHtmlEntity
(Just "ja")
HtmlStartTag { tagStack = [Div, P], tag = B, rawAttributes = "" }
, LangHtmlEntity
(Just "ja")
HtmlText { tagStack = [Div, P, B], rawText = "日本語" }
, LangHtmlEntity (Just "ja") HtmlEndTag { tagStack = [Div, P], tag = B }
, LangHtmlEntity
(Just "yue-hant")
HtmlStartTag
{ tagStack = [Div, P]
, tag = Span
, rawAttributes = "lang='yue-Hant'"
}
, LangHtmlEntity
(Just "yue-hant")
HtmlText { tagStack = [Div, P, Span], rawText = "與" }
, LangHtmlEntity
(Just "yue-hant")
HtmlStartTag { tagStack = [Div, P, Span], tag = B, rawAttributes = "" }
, LangHtmlEntity
(Just "yue-hant")
HtmlText { tagStack = [Div, P, Span, B], rawText = "與粵語" }
, LangHtmlEntity
(Just "yue-hant")
HtmlEndTag { tagStack = [Div, P, Span], tag = B }
, LangHtmlEntity
(Just "yue-hant")
HtmlEndTag { tagStack = [Div, P], tag = Span }
, LangHtmlEntity (Just "ja") HtmlEndTag { tagStack = [Div] , tag = P }
, LangHtmlEntity Nothing HtmlEndTag { tagStack = [], tag = Div }
]
spec :: Spec
spec = do
specify "extractLang" $ do
extractLang "" `shouldBe` Nothing
extractLang "lang=en" `shouldBe` Just "en"
extractLang "lang=en-US" `shouldBe` Just "en-us"
extractLang "lang='ko-KR'" `shouldBe` Just "ko-kr"
extractLang "lang=\"zh-Hant\"" `shouldBe` Just "zh-hant"
extractLang "lang=\"yue-Hans-HK\"" `shouldBe` Just "yue-hans-hk"
extractLang "id=\"foo\" lang=\"en\"" `shouldBe` Just "en"
extractLang "id=\"foo\" lang=zh-CN class=bar" `shouldBe` Just "zh-cn"
specify "annotateWithLang" $ do
annotateWithLang [] `shouldBe` []
annotateWithLang source `shouldBe` annotated