forked from cs327e-spring-2014/xml-tests
-
Notifications
You must be signed in to change notification settings - Fork 0
/
wigu-TestXML.py
122 lines (91 loc) · 3.32 KB
/
wigu-TestXML.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
"""
# Name: William Gunn and Patrick Jackson
# ID: weg375, paj478
# Date Created: 8 Feb 2013
# Date Last Modified: 10 Feb 2013
#!/usr/bin/env python
"""
# -------
# imports
# -------
import StringIO
import unittest
from xml.etree.ElementTree import Element, fromstring
from XML import xml_solve, traverse, makeSearchStr
import XML
# -------
# TestXML
# -------
class TestXML (unittest.TestCase):
# -------------
# makeSearchStr
# -------------
def test_mkStr_1 (self):
r = "<Test><Moo></Moo></Test>"
key = fromstring(r)
s = ".//" + str(key.tag)
v = makeSearchStr(key, s)
self.assert_(v == ".//Test/Moo/..")
def test_mkStr_2 (self):
r = "<Test><Moo></Moo><Cow></Cow></Test>"
key = fromstring(r)
s = ".//" + str(key.tag)
v = makeSearchStr(key, s)
self.assert_(v == ".//Test/Moo/../Cow/..")
def test_mkStr_3 (self):
r = "<Team><Dragon></Dragon><Cooly><Amber></Amber></Cooly><Ahyangyi><Will></Will><Teresa><Dingle></Dingle></Teresa></Ahyangyi></Team>"
key = fromstring(r)
s = ".//" + str(key.tag)
v = makeSearchStr(key, s)
self.assert_(v == ".//Team/Dragon/../Cooly/Amber/../../Ahyangyi/Will/../Teresa/Dingle/../../..")
# ---------
# xml_solve
# ---------
def test_solve_1 (self) :
XML.position = 0 # Resets global position
r = StringIO.StringIO('<THU><Team><ACRush></ACRush><Jelly></Jelly><Cooly></Cooly></Team><JiaJia><Team><Ahyangyi></Ahyangyi><Dragon></Dragon><Cooly><Amber></Amber></Cooly></Team></JiaJia></THU>\n<Team><Cooly></Cooly></Team>')
w = StringIO.StringIO()
xml_solve(r, w)
self.assertTrue(w.getvalue() == "2\n2\n7\n")
def test_solve_2 (self) :
XML.position = 0
r = StringIO.StringIO('<THU><Team><ACRush></ACRush><Jelly></Jelly><Cooly></Cooly></Team><JiaJia><Team><Ahyangyi></Ahyangyi><Dragon></Dragon><Cooly><Amber></Amber></Cooly></Team></JiaJia></THU>\n<Team><Cooly></Cooly><Dragon></Dragon></Team>')
w = StringIO.StringIO()
xml_solve(r, w)
self.assertTrue(w.getvalue() == "1\n7\n")
def test_solve_3 (self) :
XML.position = 0
r = StringIO.StringIO('<color><red><blue><green></green></blue><purple><green></green></purple></red></color>\n<red><blue><green></green></blue><purple><green></green></purple></red>')
w = StringIO.StringIO()
xml_solve(r, w)
self.assertTrue(w.getvalue() == "1\n2\n")
def test_solve_4 (self) :
XML.position = 0
r = StringIO.StringIO('<color><red><blue><red></red></blue><purple><green></green></purple></red></color>\n<red><blue><red></red></blue></red>')
w = StringIO.StringIO()
xml_solve(r, w)
self.assertTrue(w.getvalue() == "1\n2\n")
def test_solve_5 (self) :
XML.position = 0
r = StringIO.StringIO('<Book><Author></Author><Author></Author></Book>\n<Author></Author>')
w = StringIO.StringIO()
xml_solve(r, w)
self.assertTrue(w.getvalue() == "2\n2\n3\n")
def test_solve_6 (self) :
XML.position = 0
r = StringIO.StringIO('<Dog><Dog></Dog></Dog>\n<Dog><Dog></Dog></Dog>')
w = StringIO.StringIO()
xml_solve(r, w)
self.assertTrue(w.getvalue() == "1\n1\n")
def test_solve_7 (self) :
XML.position = 0
r = StringIO.StringIO('<Dog></Dog>\n<Wolf></Wolf>')
w = StringIO.StringIO()
xml_solve(r, w)
self.assertTrue(w.getvalue() == "0\n")
# ----
# main
# ----
print "TestXML.py"
unittest.main()
print "Done."