comparison genshi/tests/input.py @ 902:09cc3627654c experimental-inline

Sync `experimental/inline` branch with [source:trunk@1126].
author cmlenz
date Fri, 23 Apr 2010 21:08:26 +0000
parents 1837f39efd6f
children
comparison
equal deleted inserted replaced
830:de82830f8816 902:09cc3627654c
1 # -*- coding: utf-8 -*- 1 # -*- coding: utf-8 -*-
2 # 2 #
3 # Copyright (C) 2006 Edgewall Software 3 # Copyright (C) 2006-2009 Edgewall Software
4 # All rights reserved. 4 # All rights reserved.
5 # 5 #
6 # This software is licensed as described in the file COPYING, which 6 # This software is licensed as described in the file COPYING, which
7 # you should have received as part of this distribution. The terms 7 # you should have received as part of this distribution. The terms
8 # are also available at http://genshi.edgewall.org/wiki/License. 8 # are also available at http://genshi.edgewall.org/wiki/License.
25 def test_text_node_pos_single_line(self): 25 def test_text_node_pos_single_line(self):
26 text = '<elem>foo bar</elem>' 26 text = '<elem>foo bar</elem>'
27 events = list(XMLParser(StringIO(text))) 27 events = list(XMLParser(StringIO(text)))
28 kind, data, pos = events[1] 28 kind, data, pos = events[1]
29 self.assertEqual(Stream.TEXT, kind) 29 self.assertEqual(Stream.TEXT, kind)
30 self.assertEqual(u'foo bar', data) 30 self.assertEqual('foo bar', data)
31 self.assertEqual((None, 1, 6), pos) 31 self.assertEqual((None, 1, 6), pos)
32 32
33 def test_text_node_pos_multi_line(self): 33 def test_text_node_pos_multi_line(self):
34 text = '''<elem>foo 34 text = '''<elem>foo
35 bar</elem>''' 35 bar</elem>'''
36 events = list(XMLParser(StringIO(text))) 36 events = list(XMLParser(StringIO(text)))
37 kind, data, pos = events[1] 37 kind, data, pos = events[1]
38 self.assertEqual(Stream.TEXT, kind) 38 self.assertEqual(Stream.TEXT, kind)
39 self.assertEqual(u'foo\nbar', data) 39 self.assertEqual('foo\nbar', data)
40 self.assertEqual((None, 1, -1), pos) 40 self.assertEqual((None, 1, -1), pos)
41 41
42 def test_element_attribute_order(self): 42 def test_element_attribute_order(self):
43 text = '<elem title="baz" id="foo" class="bar" />' 43 text = '<elem title="baz" id="foo" class="bar" />'
44 events = list(XMLParser(StringIO(text))) 44 events = list(XMLParser(StringIO(text)))
45 kind, data, pos = events[0] 45 kind, data, pos = events[0]
46 self.assertEqual(Stream.START, kind) 46 self.assertEqual(Stream.START, kind)
47 tag, attrib = data 47 tag, attrib = data
48 self.assertEqual(u'elem', tag) 48 self.assertEqual('elem', tag)
49 self.assertEqual((u'title', u'baz'), attrib[0]) 49 self.assertEqual(('title', 'baz'), attrib[0])
50 self.assertEqual((u'id', u'foo'), attrib[1]) 50 self.assertEqual(('id', 'foo'), attrib[1])
51 self.assertEqual((u'class', u'bar'), attrib[2]) 51 self.assertEqual(('class', 'bar'), attrib[2])
52 52
53 def test_unicode_input(self): 53 def test_unicode_input(self):
54 text = u'<div>\u2013</div>' 54 text = u'<div>\u2013</div>'
55 events = list(XMLParser(StringIO(text))) 55 events = list(XMLParser(StringIO(text)))
56 kind, data, pos = events[1] 56 kind, data, pos = events[1]
118 def test_text_node_pos_single_line(self): 118 def test_text_node_pos_single_line(self):
119 text = '<elem>foo bar</elem>' 119 text = '<elem>foo bar</elem>'
120 events = list(HTMLParser(StringIO(text))) 120 events = list(HTMLParser(StringIO(text)))
121 kind, data, pos = events[1] 121 kind, data, pos = events[1]
122 self.assertEqual(Stream.TEXT, kind) 122 self.assertEqual(Stream.TEXT, kind)
123 self.assertEqual(u'foo bar', data) 123 self.assertEqual('foo bar', data)
124 self.assertEqual((None, 1, 6), pos) 124 self.assertEqual((None, 1, 6), pos)
125 125
126 def test_text_node_pos_multi_line(self): 126 def test_text_node_pos_multi_line(self):
127 text = '''<elem>foo 127 text = '''<elem>foo
128 bar</elem>''' 128 bar</elem>'''
129 events = list(HTMLParser(StringIO(text))) 129 events = list(HTMLParser(StringIO(text)))
130 kind, data, pos = events[1] 130 kind, data, pos = events[1]
131 self.assertEqual(Stream.TEXT, kind) 131 self.assertEqual(Stream.TEXT, kind)
132 self.assertEqual(u'foo\nbar', data) 132 self.assertEqual('foo\nbar', data)
133 self.assertEqual((None, 1, 6), pos) 133 self.assertEqual((None, 1, 6), pos)
134 134
135 def test_input_encoding_text(self): 135 def test_input_encoding_text(self):
136 text = u'<div>\xf6</div>'.encode('iso-8859-1') 136 text = u'<div>\xf6</div>'.encode('iso-8859-1')
137 events = list(HTMLParser(StringIO(text), encoding='iso-8859-1')) 137 events = list(HTMLParser(StringIO(text), encoding='iso-8859-1'))
172 def test_processing_instruction(self): 172 def test_processing_instruction(self):
173 text = '<?php echo "Foobar" ?>' 173 text = '<?php echo "Foobar" ?>'
174 events = list(HTMLParser(StringIO(text))) 174 events = list(HTMLParser(StringIO(text)))
175 kind, (target, data), pos = events[0] 175 kind, (target, data), pos = events[0]
176 self.assertEqual(Stream.PI, kind) 176 self.assertEqual(Stream.PI, kind)
177 self.assertEqual(u'php', target) 177 self.assertEqual('php', target)
178 self.assertEqual(u'echo "Foobar"', data) 178 self.assertEqual('echo "Foobar"', data)
179 179
180 def test_xmldecl(self): 180 def test_xmldecl(self):
181 text = '<?xml version="1.0" ?><root />' 181 text = '<?xml version="1.0" ?><root />'
182 events = list(XMLParser(StringIO(text))) 182 events = list(XMLParser(StringIO(text)))
183 kind, (version, encoding, standalone), pos = events[0] 183 kind, (version, encoding, standalone), pos = events[0]
184 self.assertEqual(Stream.XML_DECL, kind) 184 self.assertEqual(Stream.XML_DECL, kind)
185 self.assertEqual(u'1.0', version) 185 self.assertEqual('1.0', version)
186 self.assertEqual(None, encoding) 186 self.assertEqual(None, encoding)
187 self.assertEqual(-1, standalone) 187 self.assertEqual(-1, standalone)
188 188
189 def test_xmldecl_encoding(self): 189 def test_xmldecl_encoding(self):
190 text = '<?xml version="1.0" encoding="utf-8" ?><root />' 190 text = '<?xml version="1.0" encoding="utf-8" ?><root />'
191 events = list(XMLParser(StringIO(text))) 191 events = list(XMLParser(StringIO(text)))
192 kind, (version, encoding, standalone), pos = events[0] 192 kind, (version, encoding, standalone), pos = events[0]
193 self.assertEqual(Stream.XML_DECL, kind) 193 self.assertEqual(Stream.XML_DECL, kind)
194 self.assertEqual(u'1.0', version) 194 self.assertEqual('1.0', version)
195 self.assertEqual(u'utf-8', encoding) 195 self.assertEqual('utf-8', encoding)
196 self.assertEqual(-1, standalone) 196 self.assertEqual(-1, standalone)
197 197
198 def test_xmldecl_standalone(self): 198 def test_xmldecl_standalone(self):
199 text = '<?xml version="1.0" standalone="yes" ?><root />' 199 text = '<?xml version="1.0" standalone="yes" ?><root />'
200 events = list(XMLParser(StringIO(text))) 200 events = list(XMLParser(StringIO(text)))
201 kind, (version, encoding, standalone), pos = events[0] 201 kind, (version, encoding, standalone), pos = events[0]
202 self.assertEqual(Stream.XML_DECL, kind) 202 self.assertEqual(Stream.XML_DECL, kind)
203 self.assertEqual(u'1.0', version) 203 self.assertEqual('1.0', version)
204 self.assertEqual(None, encoding) 204 self.assertEqual(None, encoding)
205 self.assertEqual(1, standalone) 205 self.assertEqual(1, standalone)
206 206
207 def test_processing_instruction_trailing_qmark(self): 207 def test_processing_instruction_trailing_qmark(self):
208 text = '<?php echo "Foobar" ??>' 208 text = '<?php echo "Foobar" ??>'
209 events = list(HTMLParser(StringIO(text))) 209 events = list(HTMLParser(StringIO(text)))
210 kind, (target, data), pos = events[0] 210 kind, (target, data), pos = events[0]
211 self.assertEqual(Stream.PI, kind) 211 self.assertEqual(Stream.PI, kind)
212 self.assertEqual(u'php', target) 212 self.assertEqual('php', target)
213 self.assertEqual(u'echo "Foobar" ?', data) 213 self.assertEqual('echo "Foobar" ?', data)
214 214
215 def test_out_of_order_tags1(self): 215 def test_out_of_order_tags1(self):
216 text = '<span><b>Foobar</span></b>' 216 text = '<span><b>Foobar</span></b>'
217 events = list(HTMLParser(StringIO(text))) 217 events = list(HTMLParser(StringIO(text)))
218 self.assertEqual(5, len(events)) 218 self.assertEqual(5, len(events))
Copyright (C) 2012-2017 Edgewall Software