1
# Copyright (C) 2003 by Intevation GmbH
3
# Bernhard Herzog <bh@intevation.de>
5
# This program is free software under the GPL (>=v2)
6
# Read the file COPYING coming with the software for details.
8
"""Test for the xmlsupport.py module
11
__version__ = "$Revision: 1.4 $"
12
# $Source: /thubanrepository/thuban/test/test_xmlsupport.py,v $
13
# $Id: test_xmlsupport.py,v 1.4 2003/06/20 18:29:16 bh Exp $
20
class TestValidation(unittest.TestCase, xmlsupport.ValidationTest):
22
def test_simple(self):
23
"""test xmlsupport validating valid XML
25
The test succeeds if validate_data doesn't raise any exception
27
data = ('<?xml version="1.0" encoding="UTF-8"?>\n'
28
'<!DOCTYPE session SYSTEM "thuban.dtd">\n'
29
'<session title="empty session">\n</session>\n')
30
self.validate_data(data)
32
def test_invalid(self):
33
"""test xmlsupport validating invalid XML
35
The test succeeds if validate_data raises an assertion error
37
data = ('<?xml version="1.0" encoding="UTF-8"?>\n'
38
'<!DOCTYPE session SYSTEM "thuban.dtd">\n'
39
'<session foo="bar">\n</session>\n')
40
# only really run this test when pyRXP is available
41
if xmlsupport.pyRXP is not None:
42
self.assertRaises(AssertionError, self.validate_data, data)
46
class TestEventList(unittest.TestCase):
48
"""Test cases for sax_eventlist"""
50
def test_even_list_simple(self):
51
"""Test sax_eventlist on very simple XML"""
52
data = "\n".join(['<?xml version="1.0" encoding="UTF-8"?>'
53
'<!DOCTYPE session SYSTEM "thuban.dtd">'
54
'<session title="single map&layer">'
57
self.assertEquals(xmlsupport.sax_eventlist(data = data),
58
[('start', (None, u'session'),
59
[((None, u'title'), u'single map&layer')]),
60
('end', (None, u'session'))])
62
def test_even_list_namespace(self):
63
"""Test sax_eventlist on XML with a default namespace"""
64
data = "\n".join(['<?xml version="1.0" encoding="UTF-8"?>'
65
'<!DOCTYPE session SYSTEM "thuban.dtd">'
66
'<session title="single map&layer"'
67
' xmlns="http://example.com/example.dtd">'
70
self.assertEquals(xmlsupport.sax_eventlist(data = data),
71
[('start', (u'http://example.com/example.dtd',
73
[((None, u'title'), u'single map&layer')]),
74
('end', (u'http://example.com/example.dtd',
77
def test_even_list_id_normalization(self):
78
"""Test sax_eventlist id normalization"""
79
data1 = "\n".join(['<?xml version="1.0" encoding="UTF-8"?>'
80
'<!DOCTYPE session SYSTEM "thuban.dtd">'
81
'<session title="bla">'
83
' <tableref id="foo"/>'
86
data2 = "\n".join(['<?xml version="1.0" encoding="UTF-8"?>'
87
'<!DOCTYPE session SYSTEM "thuban.dtd">'
88
'<session title="bla">'
90
' <tableref id="bar"/>'
92
ids = [((None, "table"), (None, "id"))]
93
idrefs = [((None, "tableref"), (None, "id"))]
94
self.assertEquals(xmlsupport.sax_eventlist(data = data1, ids = ids,
96
xmlsupport.sax_eventlist(data = data2, ids = ids,
99
if __name__ == "__main__":
100
# Fake the __file__ global because it's needed by a test
102
__file__ = sys.argv[0]