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 == ('')
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
')