3 from nose.tools import eq_
4 from ..element_iterator import EventPointer, ElementIterator
12 <derp foo="bar"></derp>
18 pointer = EventPointer.from_file(io.StringIO(TEST_XML))
20 eq_(pointer.tag_stack, [])
21 eq_(pointer.depth(), 0)
23 event, element = next(pointer)
24 eq_(pointer.tag_stack, ["foo"])
25 eq_(pointer.depth(), 1)
26 eq_(element.tag, "foo")
29 event, element = next(pointer)
30 eq_(pointer.tag_stack, ["foo", "bar"])
31 eq_(pointer.depth(), 2)
32 eq_(element.tag, "bar")
35 event, element = next(pointer)
36 eq_(pointer.tag_stack, ["foo", "bar", "herp"])
37 eq_(pointer.depth(), 3)
38 eq_(element.tag, "herp")
41 event, element = next(pointer)
42 eq_(pointer.tag_stack, ["foo", "bar"])
43 eq_(pointer.depth(), 2)
44 eq_(element.tag, "herp")
47 event, element = next(pointer)
48 eq_(pointer.tag_stack, ["foo"])
49 eq_(pointer.depth(), 1)
50 eq_(element.tag, "bar")
53 event, element = next(pointer)
54 eq_(pointer.tag_stack, ["foo", "derp"])
55 eq_(pointer.depth(), 2)
56 eq_(element.tag, "derp")
59 event, element = next(pointer)
60 eq_(pointer.tag_stack, ["foo"])
61 eq_(pointer.depth(), 1)
62 eq_(element.tag, "derp")
65 event, element = next(pointer)
66 eq_(pointer.tag_stack, [])
67 eq_(pointer.depth(), 0)
68 eq_(element.tag, "foo")
72 event, element = next(pointer)
76 assert False, "Iteration did not stop as expected."
80 foo_element = ElementIterator.from_file(io.StringIO(TEST_XML))
81 foo_iterator = iter(foo_element)
83 bar_element = next(foo_iterator)
84 bar_iterator = iter(bar_element)
85 eq_(bar_element.tag, "bar")
87 herp_element = next(bar_iterator)
88 eq_(herp_element.tag, "herp")
89 eq_(herp_element.text, "content")
91 derp_element = next(foo_iterator)
92 eq_(derp_element.tag, "derp")
93 eq_(derp_element.attr("foo"), "bar")
96 def test_skipping_iterator():
97 foo_element = ElementIterator.from_file(io.StringIO(TEST_XML))
98 foo_iterator = iter(foo_element)
100 bar_element = next(foo_iterator)
102 derp_element = next(foo_iterator)
103 eq_(derp_element.tag, "derp")
104 eq_(derp_element.attr("foo"), "bar")