miso-css-0.0.1: test/Miso/Css/Test/Style.hs
{-# LANGUAGE BlockArguments #-}
module Miso.Css.Test.Style where
import Miso.Css.Test.StyleMock
import Miso.Html qualified as MH
import Miso.Html.Property qualified as MH
test_style :: TestTree
test_style =
testGroup "Style"
[ testCase "div_" do
toHtml (MH.div_ [] []) @?= "<div></div>"
, testGroup "eToView"
[ testGroup "empty eacs"
[ testGroup "bitter"
[ testGroup "class"
[ "cdata hello" `go` CDataE "cdata hello"
-- No instance for ‘ghc-internal-9.1202.0:GHC.Internal.Data.String.IsString
-- (E en0 es0 cls0 '[])’
-- arising from the literal ‘"cdata hello"’
-- , "cdata hello" `go` "cdata hello"
, "<div></div>" `go` NilE (Proxy @"div")
, """<div class="c"></div>""" `go`
AppClsE (TopOrClass (Proxy @"c")) (NilE (Proxy @"div"))
, """<div class="c">cd</div>""" `go`
AppendChildE
(CDataE "cd")
(AppClsE (TopOrClass (Proxy @"c"))
(NilE (Proxy @"div")))
, """<div class="c"><br/></div>""" `go`
AppendChildE
(NilE $ Proxy @"br")
(AppClsE (TopOrClass (Proxy @"c"))
(NilE (Proxy @"div")))
, """<div class="a"><div class="b"></div></div>""" `go`
AppendChildE
(AppClsE (TopOrClass (Proxy @"b"))
(NilE $ Proxy @"div"))
(AppClsE (TopOrClass (Proxy @"a"))
(NilE (Proxy @"div")))
]
]
, testGroup "sweet"
[ go "<div> </div>" $ div_ <@ ""
, go """<div class="c"> </div>""" $ div_ =. c <@ ""
, go """<div class="c">cd</div>""" $
div_ =. c <@ "cd"
, go """<div class="c"><hr/></div>""" $ div_ =. c </ hr_
, go """<div class="a"><div class="b"></div></div>""" $
div_ =. a </ div_ =. b
, go """<div class="a"><div class="b"></div><div class="c"></div></div>""" $
div_ =. a </ div_ =. b </ div_ =. c
, go """<div class="a"><div class="b"><div class="c"></div></div></div>""" $
div_ =. a </ (div_ =. b </ div_ =. c)
]
]
, testGroup "non-empty-eacs"
[ testGroup "bitter"
[ """<div class="a"><div class="b"></div></div>""" `go`
AppendChildE
(AppClsE ab (NilE (Proxy @"div")))
(AppClsE a (NilE (Proxy @"div")))
, """<div class="a"><div class="b"><div class="c"></div></div></div>""" `go`
AppendChildE
(AppendChildE
(AppClsE abc (NilE (Proxy @"div")))
(AppClsE b (NilE (Proxy @"div"))))
(AppClsE a (NilE (Proxy @"div")))
, """<div class="a"><div class="b"><div class="c"></div></div></div>""" `go`
AppendChildE
(AppendChildE
(AppClsE abc (NilE (Proxy @"div")))
(AppClsE ab (NilE (Proxy @"div"))))
(AppClsE a
(NilE (Proxy @"div")))
]
, testGroup "sweet"
[ testGroup "tag"
[ go """<ul><li class="a"></li></ul>""" $
ul_ </ li_ =. ul_a
, go """<ul class="a"><li class="b"></li></ul>""" $
ul_ =. a </ li_ =. ul_and_a_b
, go """<div><div class="div_child"></div></div>""" $
div_ </ div_ =. div_child
, go """<div><ul><div class="div_ul_child"></div></ul></div>""" $
div_ </ (ul_ </ div_ =. div_ul_child)
]
, testGroup "misc"
[ testGroup "dangling hierarchy relation"
[ doNotTcNoBr [] [] $ div_ =. nol_c
, doNotTcNoBr [] [] $ div_ =. jn_c
]
]
, testGroup "star"
[ go """<div><ul><li class="c"></li></ul></div>""" $
div_ </ (ul_ </ li_ =. star_dir_star_dir_c)
]
, testGroup ":root"
[ go """<div class="a"><div class="b"></div></div>"""
(SealDomE (div_ =. a </ div_ =. root_b))
, go """<div class="b"></div>""" $
page (div_ =. root_b)
, go """<div><div class="b"></div></div>"""
(SealDomE $ VirtualBodyE (div_ </ div_ =. root_b))
, go """<div class="a"><div class="b"></div></div>""" $
page (div_ =. a </ div_ =. root_dir_body_dir_a_dir_b)
]
, testGroup "sibling"
[ testGroup "adjacent"
[ go """<div><div class="a"></div><div class="b"></div></div>""" $
div_ </ div_ =. a </ div_ =. a_dirSib_b
, testGroup ".a + .b"
[ doNotTcNoBr [] [[[(NowOrLater, [B], [], [[(JustNow, [B]), (JustNow, [C "a"])]])]]] $
div_ </ div_ =. a_dirSib_b
]
, go """<div><div class="a"></div><div class="b"><div class="c"></div></div></div>""" $
div_ </ div_ =. a </ (div_ =. b </ div_ =. a_dirSib_b_dir_c)
, testGroup "div between a and b"
[ doNotTcNoBr [] [[[(JustNow, [B], [], [[(JustNow, [B, C "a"])]])]]] $
div_ </ div_ =. a </ div_ </ (div_ =. b </ div_ =. a_dirSib_b_dir_c)
]
, testGroup "a missing"
[ doNotTcNoBr [] [[[(JustNow, [B], [], [[(JustNow, [B, C "a"])]])]]] $
div_ </ div_ </ (div_ =. b </ div_ =. a_dirSib_b_dir_c)
]
, testGroup "a and b are flipped"
[ doNotTcNoBr [] [[[(JustNow, [B], [], [[(JustNow, [B]), (JustNow, [C "a"])]])]]] $
div_ </ (div_ =. b </ div_ =. a_dirSib_b_dir_c) </ div_ =. a
]
, testGroup "b missing"
[ doNotTcNoBr [] [[[(JustNow, [B, C "b"], [], []),(JustNow, [], [], [[ (JustNow, [C "a"])]])]]] $
div_ </ div_ =. a </ (div_ </ div_ =. a_dirSib_b_dir_c)
]
, testGroup "b in root 1"
[ doNotTcNoBr [] [[[(JustNow, [B], [], [[(JustNow, [B]), (JustNow, [C "a"])]])]]] $
div_ =. b </ div_ =. a </ div_ =. a_dirSib_b_dir_c
]
, testGroup "b in root 2"
[ doNotTcNoBr [] [[[(JustNow, [B], [C "b"], []), (JustNow, [], [], [[ (JustNow, [C "a"])]])]]] $
div_ =. b </ div_ =. a </ (div_ </ div_ =. a_dirSib_b_dir_c)
]
, testGroup "b with c 1"
[ doNotTcNoBr [] [[[(JustNow, [B, C "b"], [], []), (JustNow, [], [], [[ (JustNow, [C "a"])]])]]] $
div_ </ div_ =. a </ div_ =. a_dirSib_b_dir_c =. b
]
, testGroup "b with c 2"
[ doNotTcNoBr [] [[[(JustNow, [B, C "b"], [], []), (JustNow, [], [], [[ (JustNow, [C "a"])]])]]] $
div_ </ div_ =. a </ (div_ </ div_ =. a_dirSib_b_dir_c =. b)
]
, testGroup "c is wrapped in div"
[ doNotTcNoBr [] [[[(JustNow, [B], [C "b"], []), (JustNow, [], [], [[(JustNow, [C "a"])]])]]] $
div_ </ div_ =. a </ (div_ =. b </ (div_ </ div_ =. a_dirSib_b_dir_c))
]
, go """<div><div class="a"></div><div class="b"></div><div class="c"></div></div>""" $
div_ </ div_ =. a </ div_ =. b </ div_ =. a_dirSib_b_dirSib_c
, testGroup "flipped a and b"
[ doNotTcNoBr [] [[[(JustNow, [B], [], [[(JustNow, [B, C "b"]), (JustNow, [C "a"])]])]]] $
div_ </ div_ =. b </ div_ =. a </ div_ =. a_dirSib_b_dirSib_c
]
, testGroup "extra elem between a and b"
[ doNotTcNoBr [] [[[(JustNow, [B], [], [[(JustNow, [B, C "a"])]])]]] $
div_ </ div_ =. a </ div_ </ div_ =. b </ div_ =. a_dirSib_b_dirSib_c
]
, testGroup "extra elem between b and c"
[ doNotTcNoBr [] [[[(JustNow, [B], [], [[(JustNow, [B, C "b"]), (JustNow, [C "a"])]])]]] $
div_ </ div_ =. a </ div_ =. b </ div_ </ div_ =. a_dirSib_b_dirSib_c
]
, testGroup "missing a class"
[ doNotTcNoBr [] [[[(JustNow, [B], [], [[(JustNow, [B, C "a"])]])]]] $
div_ </ div_ </ div_ =. b </ div_ =. a_dirSib_b_dirSib_c
]
, testGroup "missing a tag"
[ doNotTcNoBr [] [[[(JustNow, [B], [], [[(JustNow, [B]), (JustNow, [C "a"])]])]]] $
div_ </ div_ =. b </ div_ =. a_dirSib_b_dirSib_c
]
, testGroup "missing b tag"
[ doNotTcNoBr [] [[[(JustNow, [B], [], [[(JustNow, [B, C "b"]), (JustNow, [C "a"])]])]]] $
div_ </ div_ =. a </ div_ =. a_dirSib_b_dirSib_c
]
, go """<div class="c"><div class="a"></div><div class="b"></div></div>""" $
div_ =. c </ div_ =. a </ div_ =. c_dir_a_dirSib_b
, go """<div class="c"><div class="b"></div><div class="a"></div><div class="b"></div></div>""" $
div_ =. c </ div_ =. b </ div_ =. a </ div_ =. c_dir_a_dirSib_b
, go """<div class="c"><div></div><div class="a"></div><div class="b"></div></div>""" $
div_ =. c </ div_ </ div_ =. a </ div_ =. c_dir_a_dirSib_b
, go """<div class="c"><div class="a"></div><div class="b"></div><div></div></div>""" $
div_ =. c </ div_ =. a </ div_ =. c_dir_a_dirSib_b </ div_
, go """<div class="c"><div class="a"></div><div class="b"><div class="d"></div></div></div>""" $
div_ =. c </ div_ =. a </ (div_ =. b </ div_ =. c_dir_a_dirSib_b_spc_d)
, go """<div class="c"><div class="a"></div><div class="b"><div><div class="d"></div></div></div></div>""" $
div_ =. c </ div_ =. a </ (div_ =. b </ (div_ </ div_ =. c_dir_a_dirSib_b_spc_d))
, testGroup "parent c is missing"
[ doNotTcNoBr [] [[[(JustNow, [B, C "c"], [], [[(JustNow, [C "a"])]])]]] $
div_ </ div_ =. a </ div_ =. c_dir_a_dirSib_b
]
, testGroup "extra node between .a and .b"
[ doNotTcNoBr [] [[[(JustNow, [B], [C "c"], [[(JustNow, [B, C "a"])]])]]] $
div_ =. c </ div_ =. a </ div_ </ div_ =. c_dir_a_dirSib_b
]
, testGroup "extra node between .c and .a + .b"
[ doNotTcNoBr [] [[[(JustNow, [B], [C "c"], [[(JustNow, [C "a"])]])]]] $
div_ =. c </ (div_ </ (div_ =. a </ div_ =. c_dir_a_dirSib_b))
]
, testGroup "a and b wrapped into extra div"
[ doNotTcNoBr []
[[ [ (NowOrLater, [C "b"], [], [])
, (JustNow, [C "c"], [], [ [ (JustNow, [C "a"])]]) ]
, [ (JustNow, [B], [C "c"], [ [ (JustNow, [C "a"])]]) ]
]] $
div_ =. c </ (div_ </ div_ =. a </ (div_ =. b </ div_ =. c_dir_a_dirSib_b_spc_d))
]
, testGroup "parent c is missing"
[ doNotTcNoBr []
[[ [ (NowOrLater, [C "b"], [], [])
, (JustNow, [C "c"], [], [ [ (JustNow, [C "a"])]]) ]
, [ (JustNow, [B, C "c"], [], [ [ (JustNow, [C "a"])]]) ]
]] $
div_ </ div_ =. a </ (div_ =. b </ div_ =. c_dir_a_dirSib_b_spc_d)
]
, go """<div><div class="a b"></div><div class="c"></div></div>""" $
div_ </ div_ =. a =. b </ div_ =. a_with_b_dirSib_c
]
, testGroup "general"
[ go """<div><div class="a"></div><span></span><div class="b"></div></div>""" $
div_ </ div_ =. a </ span_ </ div_ =. a_genSib_b
, go """<div><div class="a"></div><div class="b"><div class="c"></div></div></div>""" $
div_ </ div_ =. a </ (div_ =. b </ div_ =. a_genSib_b_spc_c)
, go """<div><div class="a"></div><div></div><div class="b"><div class="c"></div></div></div>""" $
div_ </ div_ =. a </ div_ </ (div_ =. b </ div_ =. a_genSib_b_spc_c)
, go """<div><div class="a"></div><div></div><div></div><div class="b"><div class="c"></div></div></div>""" $
div_ </ div_ =. a </ div_ </ div_ </ (div_ =. b </ div_ =. a_genSib_b_spc_c)
, go """<div><div class="a"></div><div class="b"><div><div class="c"></div></div></div></div>""" $
div_ </ div_ =. a </ (div_ =. b </ (div_ </ div_ =. a_genSib_b_spc_c))
, go """<div><div class="a"></div><div class="b"><div><div><div class="c"></div></div></div></div></div>""" $
div_ </ div_ =. a </ (div_ =. b </ (div_ </ (div_ </ div_ =. a_genSib_b_spc_c)))
, testGroup "a missing"
[ doNotTcNoBr [] [[[(NowOrLater, [B], [], [[(JustNow, [B]), (NowOrLater, [C "a"])]])]]] $
div_ </ div_ </ (div_ =. b </ div_ =. a_genSib_b_spc_c)
]
, testGroup "a in parent"
[ doNotTcNoBr [] [[[(NowOrLater, [B], [], [[(JustNow, [B]), (NowOrLater, [C "a"])]])]]] $
div_ =. a </ div_ </ (div_ =. b </ div_ =. a_genSib_b_spc_c)
]
, testGroup "b missing"
[ doNotTcNoBr [] [[[(NowOrLater, [C "b"], [], []), (NowOrLater, [], [], [[ (NowOrLater, [C "a"])]])]]] $
div_ </ div_ =. a </ (div_ </ div_ =. a_genSib_b_spc_c)
]
, testGroup "b on same tag with c"
[ doNotTcNoBr [] [[[(NowOrLater, [C "b"], [], []), (NowOrLater, [], [], [[ (NowOrLater, [C "a"])]])]]] $
div_ </ div_ =. a </ (div_ </ div_ =. a_genSib_b_spc_c =. b)
]
, go """<div><div class="a"></div><div class="b"></div><div class="c"></div></div>""" $
div_ </ div_ =. a </ div_ =. b </ div_ =. a_genSib_b_genSib_c
, testGroup "flipped a and b"
[ doNotTcNoBr [] [[[(JustNow, [B], [], [[(JustNow, [B]), (NowOrLater, [C "a"])]])]]] $
div_ </ div_ =. b </ div_ =. a </ div_ =. a_genSib_b_genSib_c
]
, testGroup "extra elem between a and b"
[ go """<div><div class="a"></div><div></div><div class="b"></div><div class="c"></div></div>""" $
div_ </ div_ =. a </ div_ </ div_ =. b </ div_ =. a_genSib_b_genSib_c
]
, testGroup "extra elem between b and c"
[ go """<div><div class="a"></div><div class="b"></div><div></div><div class="c"></div></div>""" $
div_ </ div_ =. a </ div_ =. b </ div_ </ div_ =. a_genSib_b_genSib_c
]
, testGroup "prepended div before a"
[ go """<div><div></div><div class="a"></div><div class="b"></div><div class="c"></div></div>""" $
div_ </ div_ </ div_ =. a </ div_ =. b </ div_ =. a_genSib_b_genSib_c
]
, testGroup "appended div after c"
[ go """<div><div class="a"></div><div class="b"></div><div class="c"></div><div></div></div>""" $
div_ </ div_ =. a </ div_ =. b </ div_ =. a_genSib_b_genSib_c </ div_
]
, testGroup "missing a class"
[ doNotTcNoBr [] [[[(JustNow, [B], [], [[ (JustNow, [B])
, (NowOrLater, [C "a"])]])]]] $
div_ </ div_ </ div_ =. b </ div_ =. a_genSib_b_genSib_c
]
, testGroup "missing a tag"
[ doNotTcNoBr [] [[[(JustNow, [B], [],[[ (JustNow, [B])
, (NowOrLater, [C "a"])]])]]] $
div_ </ div_ =. b </ div_ =. a_genSib_b_genSib_c
]
, testGroup "missing b tag"
[ doNotTcNoBr [] [[[(JustNow, [B], [], [[ (JustNow, [B])
, (NowOrLater, [C "b"])
, (NowOrLater, [C "a"])]])]]] $
div_ </ div_ =. a </ div_ =. a_genSib_b_genSib_c
]
]
, testGroup "mix"
[ go """<div><div></div><p></p><span><div class="a"></div><div class="b"></div></span></div>""" $
div_ </ div_ </ p_ </ (span_ </ div_ =. a </ div_ =. div_genSib_p_dirSib_span_dir_a_dirSib_b)
, go """<div><div></div><p></p><p></p><span><div class="a"></div><div class="b"></div></span></div>""" $
div_ </ div_ </ p_ </ p_ </ (span_ </ div_ =. a </ div_ =. div_genSib_p_dirSib_span_dir_a_dirSib_b)
, go """<div><div></div><p></p><span><p></p><div class="a"></div><div class="b"></div></span></div>""" $
div_ </ div_ </ p_ </ (span_ </ p_ </ div_ =. a </ div_ =. div_genSib_p_dirSib_span_dir_a_dirSib_b)
, testGroup "li tag is between p and span"
[ doNotTcNoBr [] [[[(JustNow, [B], [], [[(JustNow, [B, T "p"]), (NowOrLater, [T "div"])]])]]] $
div_ </ div_ </ p_ </ li_ </ (span_ </ div_ =. a </ div_ =. div_genSib_p_dirSib_span_dir_a_dirSib_b)
]
, testGroup ".a and .b are wrapped into extra div"
[ doNotTcNoBr [] [[[ (JustNow, [B], [T "span"], [ [ (JustNow, [C "a"])]])
, (JustNow, [], [], [[ (JustNow, [T "p"])
, (NowOrLater, [T "div"])]])]]] $
div_ </ div_ </ p_ </ (span_ </ (div_ </ div_ =. a </ div_ =. div_genSib_p_dirSib_span_dir_a_dirSib_b))
]
, go """<div><p></p><span><div class="a"></div><div></div></span></div>""" $
div_ </ p_ </ (span_ </ div_ =. p_genSib_span_dir_a </ div_)
, go """<div><div></div><p></p><span><div class="a"></div><div></div></span></div>""" $
div_ </ div_ </ p_ </ (span_ </ div_ =. div_dirSib_p_genSib_span_dir_a </ div_)
, """<div><div></div><p></p><span><div class="a"></div><div class="b"></div><div></div></span></div>"""
`go`
(div_
</ div_
</ p_
</ (span_
</ div_ =. p_genSib_span_dir_a
</ div_ =. div_dirSib_p_genSib_span_dir_a_dirSib_b
</ div_
))
]
, testGroup "mix2"
[ go """<div><div></div><p></p><span><div class="a"></div><div class="b"></div></span></div>""" $
div_ </ div_ </ p_ </ (span_ </ div_ =. a </ div_ =. div_dirSib_p_genSib_span_dir_a_dirSib_b)
, go """<div><li></li><div></div><p></p><span><div class="a"></div><div class="b"></div></span></div>""" $
div_ </ li_ </ div_ </ p_ </ (span_ </ div_ =. a </ div_ =. div_dirSib_p_genSib_span_dir_a_dirSib_b)
, go """<div><div></div><p></p><li></li><span><div class="a"></div><div class="b"></div></span></div>""" $
div_ </ div_ </ p_ </ li_ </ (span_ </ div_ =. a </ div_ =. div_dirSib_p_genSib_span_dir_a_dirSib_b)
, testGroup "li tag is between div and p"
[ doNotTcNoBr [] [[[(JustNow, [B], [], [[(JustNow, [B, T "div"])]])]]] $
div_ </ div_ </ li_ </ p_ </ (span_ </ div_ =. a </ div_ =. div_dirSib_p_genSib_span_dir_a_dirSib_b)
]
, testGroup ".a and .b are wrapped into extra div"
[ doNotTcNoBr [] [[[ (JustNow, [B], [T "span"], [[(JustNow, [C "a"])]])
, (JustNow, [], [], [[(NowOrLater, [T "p"]), (JustNow, [T "div"])]])]]] $
div_ </ div_ </ p_ </ (span_ </ (div_ </ div_ =. a </ div_ =. div_dirSib_p_genSib_span_dir_a_dirSib_b))
]
]
]
, testGroup "id"
[ go """<div id="a"></div>""" $ div_ =# Ai
, go """<div id="a"><div id="b"></div></div>""" $ div_ =# Ai </ div_ =# Bi
, testGroup "duplicated ID"
[ doNotTc [DuplicatedId "b"] [] $ div_ =# Bi </ div_ =# Bi
, doNotTc [DuplicatedId "b"] [] $ div_ </ div_ =# Bi </ div_ =# Bi
, doNotTc [DuplicatedId "b"] [] $ div_ </ div_ =# Bi </ div_ </ div_ =# Bi
, doNotTc [DuplicatedId "b"] [] $ div_ =# Bi </ (div_ </ (div_ </ div_ =# Bi))
, doNotTc [DuplicatedId "b"] [] $ div_ =# Bi </ (div_ =# Ci </ (div_ =# Ai </ div_ =# Bi))
]
]
, testGroup "attr"
[ go """<div a="av"><div class="a"></div></div>""" $
div_ =<| atr @"a" av </ div_ =. a_wants_a_attr_in_parent
, go """<div class="a" a="av"></div>""" $ div_ =. a_wants_a_attr =<| atr @"a" av
, go """<div class="a" a="av"></div>""" $ div_ =. a_wants_a_attr =<| atr @"a" av =<| atr @"a" av
, go """<div a="av" class="a"></div>""" $ div_ =<| atr @"a" av =. a_wants_a_attr =<| atr @"a" av
, go """<div a="av" class="a"></div>""" $ div_ =<| atr @"a" av =. a_wants_a_attr
]
, testGroup "id+class+raw"
[ go """<div id="a" class="a"><p>h</p></div>""" $
div_ =# Ai =. a =< MH.p_ [] [ "h" ]
, go """<div id="b"><div class="a"><i class="rc">aaa</i></div></div>""" $
div_ =# Bi </ (div_ =. id_a =< MH.i_ [ MH.class_ "rc" ] [ "aaa" ])
]
, testGroup "id+class"
[ go """<div id="a" class="a"></div>""" $ div_ =# Ai =. a_id_a
, go """<div class="a" id="a"></div>""" $ div_ =. a_id_a =# Ai
, testGroup "#a is on parent but required to be in tag with class"
[ doNotTcNoBr [] [[[(AutoClean, [B], [I "a"], [])]]] $
div_ =# Ai </ (div_ =. a_id_a )
]
, go """<div id="a"><div class="b"></div></div>""" $
div_ =# Ai </ div_ =. b
, go """<div id="b"><div class="a"></div></div>""" $
div_ =# Bi </ div_ =. id_a
, go """<div id="c" class="a"><div class="b"></div></div>""" $
div_ =# Ci =. a </ div_ =. idC_and_a_b
]
, testGroup "class"
[ go """<div class="a"><div class="b"></div></div>""" $
div_ =. a </ (div_ =. ab)
, go """<div class="a b"><div class="c"></div></div>""" $
div_ =. a =. b </ (div_ =. a_with_b_dir_c)
, go """<div class="b a"><div class="c"></div></div>""" $
div_ =. b =. a </ (div_ =. a_with_b_dir_c)
, go """<div class="b c a"><div class="c"></div></div>""" $
div_ =. b =. c =. a </ (div_ =. a_with_b_dir_c)
, testGroup "extra div around c"
[ doNotTcNoBr [] [[[(JustNow, [B], [C "b", C "a"], [])]]] do
div_ =. b =. a </ (div_ </ div_ =. a_with_b_dir_c)
]
, testGroup "a missing"
[ doNotTcNoBr [] [[[(JustNow, [B, C "a"], [C "b"], [])]]] do
div_ =. b =. b </ div_ =. a_with_b_dir_c
]
, testGroup "a is parent of b"
[ doNotTcNoBr [] [[[(JustNow, [B], [C "a", C "b"], [])]]] do
div_ =. a </ (div_ =. b </ div_ =. a_with_b_dir_c)
]
, testGroup "a and b are applied to siblings"
[ doNotTcNoBr [] [[[(JustNow, [B, C "a"], [C "b"],[])]]] do
div_ </ div_ =. a </ (div_ =. b </ div_ =. a_with_b_dir_c)
]
, testGroup ".a is applied to this elem rather than parent one"
[ doNotTcNoBr [] [[[(NowOrLater, [C "a"], [], [])]]] do
div_ </ (div_ =. ab =. a)
]
, testGroup ".a is not applied to parent elem"
[ doNotTcNoBr [] [[[(NowOrLater, [C "a"], [], [])]]] do
div_ </ (div_ =. ab)
, doNotTcNoBr [] [[[(NowOrLater, [C "a"], [], [])]]] do
div_ =. ab
]
, go """<div class="b a"></div>""" $
div_ =. a_next_to_b =. b_next_to_a
, go """<div class="a b"></div>""" $
div_ =. b_next_to_a =. a_next_to_b
, go """<div class="a b"></div>""" $
div_ =. b_next_to_a =. a_next_to_b
, go """<div class="a b a"></div>""" $
div_ =. b_next_to_a =. a_next_to_b =. b_next_to_a
, go """<div class="a"><div class="b"><div class="c"></div></div></div>""" $
div_ =. a </ (div_ =. ab </ div_ =. abc)
, testGroup "b is missing"
[ doNotTcNoBr [] [[[(NowOrLater, [C "b"], [], []), (NowOrLater, [C "a"], [], [])]]] $
div_ =. a </ (div_ </ div_ =. abc)
, doNotTcNoBr [] [[[(NowOrLater, [C "b"], [], []), (NowOrLater, [C "a"], [], [])]]] $
div_ =. a </ div_ =. abc
]
, testGroup "a and b are flipped"
[ doNotTcNoBr [] [[[(NowOrLater, [C "a"], [], [])]]] $
div_ =. b </ (div_ =. a </ div_ =. abc)
]
, testGroup "a is missing"
[ doNotTcNoBr [] [[[(NowOrLater, [C "a"], [], [])]]] $
div_ =. b </ div_ =. abc
]
, go """<div class="a"><div class="b"><ul><div class="c"></div></ul></div></div>""" $
div_ =. a </ (div_ =. ab </ (ul_ </ div_ =. abc))
, go """<div class="a"><div class="b"></div><div class="c"></div></div>""" $
div_ =. a </ div_ =. ab </ div_ =. ac
, go """<div class="a"><div class="b"><div class="c"></div></div></div>""" $
div_ =. a </ (div_ =. ab </ div_ =. ac)
, go """<div class="a b"><div class="c"></div></div>""" $
div_ =. a =. b </ (div_ =. ab_c)
, go """<div class="a b"><div class="c"></div></div>""" $
div_ =. a =. b </ (div_ =. ba_c)
, go """<div class="b a"><div class="c"></div></div>""" $
div_ =. b =. a </ (div_ =. ba_c)
, go """<div class="a"><div class="b"><div class="c"></div></div></div>""" $
div_ =. a </ (div_ =. b </ div_ =. a_dir_b_dir_c)
, go """<div class="a"><div class="b"><p><div class="c"></div></p></div></div>""" $
div_ =. a </ (div_ =. b </ (p_ </ div_ =. a_dir_b_sp_c))
, go """<div class="a"><p><div class="b"><div class="c"></div></div></p></div>""" $
div_ =. a </ (p_ </ (div_ =. b </ div_ =. a_sp_b_dir_c))
, go """<div class="a"><div class="b"><div class="c"><div class="d"></div></div></div></div>""" $
div_ =. a </ (div_ =. b </ (div_ =. c </ div_ =. a_dir_b_dir_c_dir_d))
, go """<div class="a"><div class="b"></div></div>""" $
div_ =. a </ div_ =. a_dir_b
, testGroup ".a > .b"
[ testGroup "a is missing"
[ doNotTcNoBr [] [[[(JustNow, [B, C "a"], [], [])]]] $ div_ </ div_ =. a_dir_b
, doNotTcNoBr [] [[[(JustNow, [C "a"], [], [])]]] $ div_ =. a_dir_b
]
]
, go """<div class="a"><div class="b"><div class="c"></div></div></div>""" $
div_ =. a </ (div_ =. b </ div_ =. a_dir_b_spc_c)
, go """<div class="a"><div class="b"><div><div class="c"></div></div></div></div>""" $
div_ =. a </ (div_ =. b </ (div_ </ div_ =. a_dir_b_spc_c))
, go """<div class="c"><div class="a b"></div></div>""" $
div_ =. c </ div_ =. a =. c_dir_a_with_b
, go """<div class="c"><div class="b a"></div></div>""" $
div_ =. c </ div_ =. c_dir_a_with_b =. a
, go """<div class="c"><div></div><div class="b a"></div></div>""" $
div_ =. c </ div_ </ div_ =. c_dir_a_with_b =. a
, go """<div class="c"><div class="b a"></div><div></div></div>""" $
div_ =. c </ div_ =. c_dir_a_with_b =. a </ div_
, testGroup "a is missing"
[ doNotTcNoBr [] [[[(AutoClean, [B, C "a"], [], []), (JustNow, [C "c"], [], [])]]] $
div_ =. c </ div_ =. c_dir_a_with_b
]
, testGroup "c is missing"
[ doNotTcNoBr [] [[[(JustNow, [B, C "c"], [], [])]]] $
div_ </ div_ =. a =. c_dir_a_with_b
]
, testGroup "c is sibling"
[ doNotTcNoBr [] [[[(JustNow, [B, C "c"], [], [])]]] $
div_ </ div_ =. c </ div_ =. a =. c_dir_a_with_b
]
, testGroup "c and a are mixed"
[ doNotTcNoBr [] [[[(AutoClean, [B], [C "a"], []), (JustNow, [C "c"], [], [])]]] $
div_ =. a </ div_ =. c =. c_dir_a_with_b
, doNotTcNoBr [] [[[(AutoClean, [B], [C "a"], []), (JustNow, [C "c"], [], [])]]] $
div_ =. a </ div_ =. c_dir_a_with_b =. c
]
, testGroup "a is sibling"
[ doNotTcNoBr [] [[[(AutoClean, [B, C "a"], [], []), (JustNow, [C "c"], [], [])]]] $
div_ =. c </ div_ =. a </ div_ =. c_dir_a_with_b
, doNotTcNoBr [] [[[(AutoClean, [B, C "a"], [], []), (JustNow, [C "c"], [], [])]]] $
div_ =. c </ div_ =. c_dir_a_with_b </ div_ =. a
]
]
]
]
]
]
where
av :: MisoString = "av"