def test_references_with_paragraphs(): s = "<references>\n\n<ref>bla</ref>\n\n</references>" r = core.parse_txt(s) core.show(r) references = core.walknodel(r, lambda x: x.tagname == "references") assert len(references) == 1, "expected exactly one references node, got %s" % len(references) refs = core.walknodel(references, lambda x: x.tagname == "ref") assert len(refs) == 1, "expected exactly one ref node inside the references node, got %s" % len(refs)
def test_urllink_in_link(): """http://code.pediapress.com/wiki/ticket/602""" r = parse_txt("[[foo|[http://baz.com baz]]]") li = core.walknodel(r, lambda x: x.type == T.t_complex_link) assert len(li) == 1, "expected one link" nu = core.walknodel(r, lambda x: x.type == T.t_complex_named_url) show(r) assert len(nu) == 1, "expected exactly one named url"
def test_ref_inside_caption(): s = """ {| |+ table capshun <ref>references fun</ref> | hey || ho |}""" r = core.parse_txt(s) core.show(r) cap = core.walknodel(r, lambda x: x.type == T.t_complex_caption)[0] print "caption:" core.show(cap) refs = core.walknodel(cap, lambda x: x.tagname == "ref") assert refs
def test_references_with_paragraphs(): s = "<references>\n\n<ref>bla</ref>\n\n</references>" r = core.parse_txt(s) core.show(r) references = core.walknodel(r, lambda x: x.tagname == "references") assert len( references ) == 1, "expected exactly one references node, got %s" % len(references) refs = core.walknodel(references, lambda x: x.tagname == "ref") assert len( refs ) == 1, "expected exactly one ref node inside the references node, got %s" % len( refs)
def test_urllink_in_brackets(): """http://code.pediapress.com/wiki/ticket/556""" r = parse_txt("[[http://example.com bla]]") show(r) nu = core.walknodel(r, lambda x: x.type == T.t_complex_named_url) print nu assert len(nu) == 1, "expected exactly one named url"
def test_newline_in_link_text(): """http://code.pediapress.com/wiki/ticket/906""" s = "[[Albert Einstein | Albert\nEinstein]]" r = core.parse_txt(s) core.show(r) links = core.walknodel(r, lambda x: x.type == T.t_complex_link) assert links, "no links found"
def test_combine_preformatted(): """http://code.pediapress.com/wiki/ticket/569""" s = " preformatted\n and more preformatted\n" r = parse_txt(s) core.show(r) pre = core.walknodel(r, lambda x: x.type == T.t_complex_preformatted) assert len(pre) == 1, "expected exactly one preformatted node"
def test_ul_inside_star(): """http://code.pediapress.com/wiki/ticket/735""" r=core.parse_txt(""" * foo * bar </ul> baz """) core.show(r) ul = core.walknodel(r, lambda x: x.tagname=="ul") def baz(x): if x.text and "baz" in x.text: return True b1 = core.walknodel(ul, baz) b2 = core.walknodel(r, baz) assert not b1, "baz should not be inside ul" assert b2, "baz missing"
def test_span_vs_lines(): r = core.parse_txt("""* foo <span> bar * baz """) core.show(r) ul = core.walknodel(r, lambda x: x.tagname == "ul") assert len(ul) == 1, "expected one list"
def test_style_tag_closes_same(): r = core.parse_txt("foo<u>bar<u>baz") core.show(r) utags = core.walknodel(r, lambda x: x.tagname == "u") print "utags:", utags txt = "".join([T.join_as_text(x.children) for x in utags]) print "txt:", txt assert txt == u"bar"
def test_ul_inside_star(): """http://code.pediapress.com/wiki/ticket/735""" r = core.parse_txt(""" * foo * bar </ul> baz """) core.show(r) ul = core.walknodel(r, lambda x: x.tagname == "ul") def baz(x): if x.text and "baz" in x.text: return True b1 = core.walknodel(ul, baz) b2 = core.walknodel(r, baz) assert not b1, "baz should not be inside ul" assert b2, "baz missing"
def test_no_preformatted_inside_li(): """stupid: http://code.pediapress.com/wiki/ticket/676""" r = parse_txt("""<ol><li>in li: foo bar </li></ol> """) core.show(r) pre = core.walknodel(r, lambda x: x.type == T.t_complex_preformatted) assert not pre, "should not contain preformatted"
def test_tr_inside_caption(): """http://code.pediapress.com/wiki/ticket/709""" s = """ {| |+ table capshun <tr><td>bla</td></tr> |}""" r = core.parse_txt(s) core.show(r) cap = core.walknodel(r, lambda x: x.type == T.t_complex_caption)[0] print "caption:" core.show(cap) rows = core.walknodel(r, lambda x: x.type == T.t_complex_table_row) print "ROWS:", rows assert len(rows) == 1, "no rows found" rows = core.walknodel(cap, lambda x: x.type == T.t_complex_table_row) print "ROWS:", rows assert len(rows) == 0, "row in table caption found"
def test_parserfun_in_gallery(): r = core.parse_txt("""<gallery> Image:ACDC_logo.gif| capshun {{#if: 1|yes}} </gallery> """) core.show(r) txt = T.join_as_text(core.walknodel(r[0].children, lambda x: True)) print "TXT:", repr(txt) assert "capshun" in txt, "bad text??" assert "capshun yes" in txt, "#if failed to expand"
def test_comment_in_gallery(): """http://code.pediapress.com/wiki/ticket/741""" r = core.parse_txt("""<gallery> Image:ACDC_logo.gif|capshun<!--comment--> </gallery> """) core.show(r) txt = T.join_as_text(core.walknodel(r[0].children, lambda x: True)) print "TXT:", repr(txt) assert "capshun" in txt, "bad text??" assert "comment" not in txt, "comment not stripped"
def test_parse_ul_not_preformatted(): """http://code.pediapress.com/wiki/ticket/554""" s = """ <ul> <li>bla blub <li>bla bla </ul> """ r = parse_txt(s) core.show(r) pre = core.walknodel(r, lambda x: x.type == T.t_complex_preformatted) assert not pre, "should contain no preformatted nodes"
def test_named_url_in_double_brackets(): """http://code.pediapress.com/wiki/ticket/556""" r = core.parse_txt("[[http://foo.com baz]]") core.show(r) named = core.walknodel(r, lambda x: x.type == T.t_complex_named_url) assert len(named) == 1, "expected a named url" txt = T.join_as_text(r) print "TXT:", repr(txt) assert "[" in txt, "missing [" assert "]" in txt, "missing ]" assert "[[" not in txt, "bad text" assert "]]" not in txt, "bad text"
def test_link_vs_namedurl(): r = core.parse_txt("[[acdc [http://web.de bla]]") core.show(r) txt = T.join_as_text(r) print "TXT:", repr(txt) assert "[[acdc " in txt, "wrong text" assert txt.endswith("]"), "wrong text" assert r[0].type != T.t_complex_link, "should not be an article link" urls = core.walknodel(r, lambda x: x.type == T.t_complex_named_url) assert len(urls) == 1, "no named url found"
def test_link_in_table_caption(): """http://code.pediapress.com/wiki/ticket/578""" s = """{| |+ id="CFNP" [[bla | blubb]] |- | a || b |} """ r = parse_txt(s) with_vlist = core.walknodel(r, lambda x: bool(x.vlist)) print with_vlist assert not with_vlist, "no node should contain a vlist"
def test_tab_table(): s = """ \t{| |- \t| cell1 | cell2 \t|}after """ r = core.parse_txt(s) core.show(r) tables = [] def allowed(node): retval = bool(tables) if node.type == T.t_complex_table: tables.append(node) return retval nodes = [x for x in r if allowed(x)] assert nodes, "bad or no table" cells = core.walknodel(r, lambda x: x.type == T.t_complex_table_cell) assert len(cells) == 2, "expected two cells"
def test_ref_drop_text_newlines(): """http://code.pediapress.com/wiki/ticket/812""" r = core.parse_txt("<ref>bar\n\n</ref>") core.show(r) txt = T.join_as_text(core.walknodel(r, lambda x: 1)) assert "bar" in txt, "text dropped"
def test_var_tag(): r = parse_txt("<var>strike</var>") s = core.walknodel(r, lambda x: x.tagname == "var") assert len(s) == 1
def test_s_tag(): r = parse_txt("<s>strike</s>") s = core.walknodel(r, lambda x: x.tagname == "s") assert len(s) == 1
def doit(s): r = parse_txt(s) core.show(r) styles = core.walknodel(r, lambda x: x.type == T.t_complex_style) print styles assert len(styles) == 2
def test_mark_style_595(): """http://code.pediapress.com/wiki/ticket/595""" r = parse_txt('<b><i>[[Article link|Display text]]</i></b> after') b = core.walknodel(r, lambda x: x.tagname == "b") print b assert len(b) == 1, "expected exactly one bold node"
def test_preformatted_empty_line(): r = parse_txt("foo\n pre1\n \n pre2\nbar\n") core.show(r) pre = core.walknodel(r, lambda x: x.type == T.t_complex_preformatted) assert len(pre) == 1, "expected exactly one preformatted node"