import py from py.impl.xmlgen import unicode, html class ns(py.xml.Namespace): pass def test_tag_with_text(): x = ns.hello("world") u = unicode(x) assert u == "world" def test_class_identity(): assert ns.hello is ns.hello def test_tag_with_text_and_attributes(): x = ns.some(name="hello", value="world") assert x.attr.name == 'hello' assert x.attr.value == 'world' u = unicode(x) assert u == '' def test_tag_with_subclassed_attr_simple(): class my(ns.hello): class Attr(ns.hello.Attr): hello="world" x = my() assert x.attr.hello == 'world' assert unicode(x) == '' def test_tag_nested(): x = ns.hello(ns.world()) unicode(x) # triggers parentifying assert x[0].parent is x u = unicode(x) assert u == '' def test_tag_xmlname(): class my(ns.hello): xmlname = 'world' u = unicode(my()) assert u == '' def test_tag_with_text_entity(): x = ns.hello('world & rest') u = unicode(x) assert u == "world & rest" def test_tag_with_text_and_attributes_entity(): x = ns.some(name="hello & world") assert x.attr.name == "hello & world" u = unicode(x) assert u == '' def test_raw(): x = ns.some(py.xml.raw("

literal

")) u = unicode(x) assert u == "

literal

" def test_html_name_stickyness(): class my(html.p): pass x = my("hello") assert unicode(x) == '

hello

' def test_stylenames(): class my: class body(html.body): style = html.Style(font_size = "12pt") u = unicode(my.body()) assert u == '' def test_class_None(): t = html.body(class_=None) u = unicode(t) assert u == '' def test_alternating_style(): alternating = ( html.Style(background="white"), html.Style(background="grey"), ) class my(html): class li(html.li): def style(self): i = self.parent.index(self) return alternating[i%2] style = property(style) x = my.ul( my.li("hello"), my.li("world"), my.li("42")) u = unicode(x) assert u == ('
  • hello
  • ' '
  • world
  • ' '
  • 42
  • ' '
') def test_singleton(): h = html.head(html.link(href="foo")) assert unicode(h) == '' h = html.head(html.script(src="foo")) assert unicode(h) == '' def test_inline(): h = html.div(html.span('foo'), html.span('bar')) assert (h.unicode(indent=2) == '
foobar
')