def test_with(): with xsc.build(): with html.ul() as e: +html.li(1) +html.li(2) assert e == html.ul(html.li(1), html.li(2)) with xsc.build(): with html.p() as e: +html.span(1) with html.b(): +html.span(2) +html.span(3) assert e == html.p(html.span(1), html.b(html.span(2)), html.span(3)) with xsc.build(): with html.p() as e: +xsc.Text(1) assert e == html.p(1) with xsc.build(): with html.p() as e: +xml.Attrs(lang="de") assert e == html.p(xml.Attrs(lang="de")) assert e.bytes() == b'<p xml:lang="de"></p>' with xsc.build(): with xsc.Frag() as e: +xsc.Text(1) assert e == xsc.Frag(1) # Test add() with xsc.build(): with html.p() as e: xsc.add(1) assert e == html.p(1) with xsc.build(): with html.p() as e: xsc.add(class_="foo") assert e == html.p(class_="foo") with xsc.build(): with html.p() as e: xsc.add({"class": "foo"}) assert e == html.p(class_="foo") with xsc.build(): with html.p() as e: xsc.add(xml.Attrs(lang="en")) assert e == html.p(xml.Attrs(lang="en"))
def test_delitem(): for cls in (xsc.Frag, html.div): e = cls(list(range(6))) del e[0] assert e == cls(1, 2, 3, 4, 5) del e[-1] assert e == cls(1, 2, 3, 4) e = cls(list(range(6))) del e[1:5] assert e == cls(0, 5) e = cls(list(range(6))) del e[2:] assert e == cls(0, 1) e = cls(list(range(6))) del e[-2:] assert e == cls(0, 1, 2, 3) e = cls(list(range(6))) del e[:2] assert e == cls(2, 3, 4, 5) e = cls(list(range(6))) del e[:-2] assert e == cls(4, 5) e = cls(list(range(6))) del e[:] assert e == cls() e = cls(list(range(6))) del e[::2] assert e == cls(1, 3, 5) e = cls(list(range(6))) del e[1::2] assert e == cls(0, 2, 4) e = cls(list(range(6))) del e[lambda p: int(str(p[-1])) % 2] assert e == cls(0, 2, 4) e = cls(html.b(i) if i % 2 else html.a(i) for i in range(6)) del e[html.b] assert e == cls(html.a(0), html.a(2), html.a(4))
def test_delitem(): for cls in (xsc.Frag, html.div): e = cls(range(6)) del e[0] assert e == cls(1, 2, 3, 4, 5) del e[-1] assert e == cls(1, 2, 3, 4) e = cls(range(6)) del e[1:5] assert e == cls(0, 5) e = cls(range(6)) del e[2:] assert e == cls(0, 1) e = cls(range(6)) del e[-2:] assert e == cls(0, 1, 2, 3) e = cls(range(6)) del e[:2] assert e == cls(2, 3, 4, 5) e = cls(range(6)) del e[:-2] assert e == cls(4, 5) e = cls(range(6)) del e[:] assert e == cls() e = cls(range(6)) del e[::2] assert e == cls(1, 3, 5) e = cls(range(6)) del e[1::2] assert e == cls(0, 2, 4) e = cls(range(6)) del e[lambda p:int(str(p[-1])) % 2] assert e == cls(0, 2, 4) e = cls(html.b(i) if i%2 else html.a(i) for i in range(6)) del e[html.b] assert e == cls(html.a(0), html.a(2), html.a(4))
def test_css(): with xsc.build(): with html.div(id=1) as e: with html.ul(id=2): +html.li("foo") +html.li() assert list(e.walknodes(css.selector("div"))) == [e] assert list(e.walknodes(css.selector("li"))) == [e[0][0], e[0][1]] assert list(e.walknodes(css.selector("div#1"))) == [e] assert list(e.walknodes(css.selector("#2"))) == [e[0]] assert list(e.walknodes(css.selector(":empty"))) == [e[0][1]] assert list(e.walknodes(css.selector("li:empty"))) == [e[0][1]] assert list(e.walknodes(css.selector("div :empty"))) == [e[0][1]] assert list(e.walknodes(css.selector("div>*:empty"))) == [] assert list(e.walknodes(css.selector("div>:empty"))) == [] assert list(e.walknodes(css.selector("*|li"))) == [e[0][0], e[0][1]] assert list(e.walknodes(css.selector("h|li", prefixes={"h": html}))) == [e[0][0], e[0][1]] assert list(e.walknodes(css.selector("h|li", prefixes={"h": specials}))) == [] with xsc.build(): with xsc.Frag() as e: +html.div("foo") +xsc.Text("filler") +html.p("foo") +xsc.Text("filler") +html.ul(html.li("foo")) assert list(e.walknodes(css.selector("div + p"))) == [e[2]] assert list(e.walknodes(css.selector("div + ul"))) == [] assert list(e.walknodes(css.selector("ul + p"))) == [] assert list(e.walknodes(css.selector("div ~ p"))) == [e[2]] assert list(e.walknodes(css.selector("div ~ ul"))) == [e[4]] assert list(e.walknodes(css.selector("p ~ div"))) == [] assert list(e.walknodes(css.selector("div:first-child + p"))) == [e[2]] assert list(e.walknodes(css.selector("*:first-child + p"))) == [e[2]] with xsc.build(): with xsc.Frag() as e: +html.span(html.b("hurz"), "gurk", html.em("hinz"), html.em("kunz")) +html.em("hurz") +html.em("hinz") +xsc.Text("nix") +html.i("kunz") assert list(e.walknodes(css.selector("*:only-of-type"))) == [e[0], e[0][0], e[4]] assert list(e.walknodes(css.selector("*:nth-child(1)"))) == [e[0], e[0][0]] assert list(e.walknodes(css.selector("*:nth-child(2)"))) == [e[0][2], e[1]] assert list(e.walknodes(css.selector("*:nth-last-child(1)"))) == [e[0][3], e[4]] assert list(e.walknodes(css.selector("*:nth-last-child(2)"))) == [e[0][2], e[2]] assert list(e.walknodes(css.selector("*:nth-of-type(1)"))) == [e[0], e[0][0], e[0][2], e[1], e[4]] assert list(e.walknodes(css.selector("*:nth-of-type(2)"))) == [e[0][3], e[2]] assert list(e.walknodes(css.selector("*:nth-last-of-type(1)"))) == [e[0], e[0][0], e[0][3], e[2], e[4]] assert list(e.walknodes(css.selector("*:nth-last-of-type(2)"))) == [e[0][2], e[1]] e = xsc.Frag(html.span(html.b("hurz"), "gurk")) assert list(e.walknodes(css.selector("*:only-child"))) == [e[0], e[0][0]] with xsc.build(): with xsc.Frag() as e: +html.em(class_="gurk", lang="en") +html.em(class_="gurk hurz", lang="en-us") +html.em(class_="hurz", lang="de") assert list(e.walknodes(css.selector("em[class='gurk']"))) == [e[0]] assert list(e.walknodes(css.selector("em[class~='gurk']"))) == [e[0], e[1]] assert list(e.walknodes(css.selector("em[lang|='en']"))) == [e[0], e[1]]
def test_css(): with xsc.build(): with html.div(id=1) as e: with html.ul(id=2): +html.li("foo") +html.li() assert list(e.walknodes(css.selector("div"))) == [e] assert list(e.walknodes(css.selector("li"))) == [e[0][0], e[0][1]] assert list(e.walknodes(css.selector("div#1"))) == [e] assert list(e.walknodes(css.selector("#2"))) == [e[0]] assert list(e.walknodes(css.selector(":empty"))) == [e[0][1]] assert list(e.walknodes(css.selector("li:empty"))) == [e[0][1]] assert list(e.walknodes(css.selector("div :empty"))) == [e[0][1]] assert list(e.walknodes(css.selector("div>*:empty"))) == [] assert list(e.walknodes(css.selector("div>:empty"))) == [] assert list(e.walknodes(css.selector("*|li"))) == [e[0][0], e[0][1]] assert list(e.walknodes(css.selector("h|li", prefixes={"h": html }))) == [e[0][0], e[0][1]] assert list(e.walknodes(css.selector("h|li", prefixes={"h": specials}))) == [] with xsc.build(): with xsc.Frag() as e: +html.div("foo") +xsc.Text("filler") +html.p("foo") +xsc.Text("filler") +html.ul(html.li("foo")) assert list(e.walknodes(css.selector("div + p"))) == [e[2]] assert list(e.walknodes(css.selector("div + ul"))) == [] assert list(e.walknodes(css.selector("ul + p"))) == [] assert list(e.walknodes(css.selector("div ~ p"))) == [e[2]] assert list(e.walknodes(css.selector("div ~ ul"))) == [e[4]] assert list(e.walknodes(css.selector("p ~ div"))) == [] assert list(e.walknodes(css.selector("div:first-child + p"))) == [e[2]] assert list(e.walknodes(css.selector("*:first-child + p"))) == [e[2]] with xsc.build(): with xsc.Frag() as e: +html.span(html.b("hurz"), "gurk", html.em("hinz"), html.em("kunz")) +html.em("hurz") +html.em("hinz") +xsc.Text("nix") +html.i("kunz") assert list(e.walknodes( css.selector("*:only-of-type"))) == [e[0], e[0][0], e[4]] assert list(e.walknodes(css.selector("*:nth-child(1)"))) == [e[0], e[0][0]] assert list(e.walknodes(css.selector("*:nth-child(2)"))) == [e[0][2], e[1]] assert list(e.walknodes( css.selector("*:nth-last-child(1)"))) == [e[0][3], e[4]] assert list(e.walknodes( css.selector("*:nth-last-child(2)"))) == [e[0][2], e[2]] assert list(e.walknodes(css.selector("*:nth-of-type(1)"))) == [ e[0], e[0][0], e[0][2], e[1], e[4] ] assert list(e.walknodes( css.selector("*:nth-of-type(2)"))) == [e[0][3], e[2]] assert list(e.walknodes(css.selector("*:nth-last-of-type(1)"))) == [ e[0], e[0][0], e[0][3], e[2], e[4] ] assert list(e.walknodes( css.selector("*:nth-last-of-type(2)"))) == [e[0][2], e[1]] e = xsc.Frag(html.span(html.b("hurz"), "gurk")) assert list(e.walknodes(css.selector("*:only-child"))) == [e[0], e[0][0]] with xsc.build(): with xsc.Frag() as e: +html.em(class_="gurk", lang="en") +html.em(class_="gurk hurz", lang="en-us") +html.em(class_="hurz", lang="de") assert list(e.walknodes(css.selector("em[class='gurk']"))) == [e[0]] assert list(e.walknodes(css.selector("em[class~='gurk']"))) == [e[0], e[1]] assert list(e.walknodes(css.selector("em[lang|='en']"))) == [e[0], e[1]]
## Copyright 1999-2017 by LivingLogic AG, Bayreuth/Germany ## Copyright 1999-2017 by Walter Dörwald ## ## All Rights Reserved ## ## See ll/xist/__init__.py for the license import pytest from ll import misc from ll.xist import xsc, xfind from ll.xist.ns import html, xml import xist_common as common node = html.div(html.tr(html.th("gurk"), html.td("hurz"), id=html.b(42)), class_=html.i("hinz")) def path2str(path): return ".".join("#" if isinstance(node, xsc.Text) else node.xmlname for node in path) def iterpath2str(iter): return [path2str(s) for s in iter] def test_walk_coverage(): node = common.createfrag()
## See ll/xist/__init__.py for the license import pytest from ll import misc from ll.xist import xsc, xfind from ll.xist.ns import html, xml import xist_common as common node = html.div( html.tr( html.th("gurk"), html.td("hurz"), id=html.b(42) ), class_=html.i("hinz") ) def path2str(path): return ".".join("#" if isinstance(node, xsc.Text) else node.xmlname for node in path) def iterpath2str(iter): return [path2str(s) for s in iter] def test_walk_coverage(): node = common.createfrag()