@@ -87,6 +87,198 @@ def testSingleTextareaWithoutValue(self):
87
87
{"type" : u"Characters" , "data" : u"bar" },
88
88
{"type" : u"EndTag" , "name" : u"textarea" , "data" : []}])
89
89
90
+ def testSingleSelectWithValue (self ):
91
+ self .runTest (
92
+ [{"type" : u"StartTag" , "name" : u"select" , "data" : [(u"name" , u"foo" )]},
93
+ {"type" : u"StartTag" , "name" : u"option" , "data" : [(u"value" , u"bar" )]},
94
+ {"type" : u"Characters" , "data" : u"quux" },
95
+ {"type" : u"EndTag" , "name" : u"option" , "data" : []},
96
+ {"type" : u"EndTag" , "name" : u"select" , "data" : []}],
97
+ FieldStorage ({"foo" : "bar" }),
98
+ [{"type" : u"StartTag" , "name" : u"select" , "data" : [(u"name" , u"foo" )]},
99
+ {"type" : u"StartTag" , "name" : u"option" , "data" : [(u"value" , u"bar" ), (u"selected" , u"" )]},
100
+ {"type" : u"Characters" , "data" : u"quux" },
101
+ {"type" : u"EndTag" , "name" : u"option" , "data" : []},
102
<
F438
code class="diff-text syntax-highlighted-line addition">+ {"type" : u"EndTag" , "name" : u"select" , "data" : []}])
103
+
104
+ def testSingleSelectWithValueShouldBeUnselected (self ):
105
+ self .runTest (
106
+ [{"type" : u"StartTag" , "name" : u"select" , "data" : [(u"name" , u"foo" )]},
107
+ {"type" : u"StartTag" , "name" : u"option" , "data" : [(u"value" , u"bar" )]},
108
+ {"type" : u"Characters" , "data" : u"quux" },
109
+ {"type" : u"EndTag" , "name" : u"option" , "data" : []},
110
+ {"type" : u"EndTag" , "name" : u"select" , "data" : []}],
111
+ FieldStorage ({"foo" : "quux" }),
112
+ [{"type" : u"StartTag" , "name" : u"select" , "data" : [(u"name" , u"foo" )]},
113
+ {"type" : u"StartTag" , "name" : u"option" , "data" : [(u"value" , u"bar" )]},
114
+ {"type" : u"Characters" , "data" : u"quux" },
115
+ {"type" : u"EndTag" , "name" : u"option" , "data" : []},
116
+ {"type" : u"EndTag" , "name" : u"select" , "data" : []}])
117
+
118
+ def testSingleSelectWithoutValue (self ):
119
+ self .runTest (
120
+ [{"type" : u"StartTag" , "name" : u"select" , "data" : [(u"name" , u"foo" )]},
121
+ {"type" : u"StartTag" , "name" : u"option" , "data" : []},
122
+ {"type" : u"Characters" , "data" : u"bar" },
123
+ {"type" : u"EndTag" , "name" : u"option" , "data" : []},
124
+ {"type" : u"EndTag" , "name" : u"select" , "data" : []}],
125
+ FieldStorage ({"foo" : "bar" }),
126
+ [{"type" : u"StartTag" , "name" : u"select" , "data" : [(u"name" , u"foo" )]},
127
+ {"type" : u"StartTag" , "name" : u"option" , "data" : [(u"selected" , u"" )]},
128
+ {"type" : u"Characters" , "data" : u"bar" },
129
+ {"type" : u"EndTag" , "name" : u"option" , "data" : []},
130
+ {"type" : u"EndTag" , "name" : u"select" , "data" : []}])
131
+
132
+ def testSingleSelectWithoutValueShouldBeUnselected (self ):
133
+ self .runTest (
134
+ [{"type" : u"StartTag" , "name" : u"select" , "data" : [(u"name" , u"foo" )]},
135
+ {"type" : u"StartTag" , "name" : u"option" , "data" : []},
136
+ {"type" : u"Characters" , "data" : u"bar" },
137
+ {"type" : u"EndTag" , "name" : u"option" , "data" : []},
138
+ {"type" : u"EndTag" , "name" : u"select" , "data" : []}],
139
+ FieldStorage ({"foo" : "quux" }),
140
+ [{"type" : u"StartTag" , "name" : u"select" , "data" : [(u"name" , u"foo" )]},
141
+ {"type" : u"StartTag" , "name" : u"option" , "data" : []},
142
+ {"type" : u"Characters" , "data" : u"bar" },
143
+ {"type" : u"EndTag" , "name" : u"option" , "data" : []},
144
+ {"type" : u"EndTag" , "name" : u"select" , "data" : []}])
145
+
146
+ def testSingleSelectTwoOptionsWithValue (self ):
147
+ self .runTest (
148
+ [{"type" : u"StartTag" , "name" : u"select" , "data" : [(u"name" , u"foo" )]},
149
+ {"type" : u"StartTag" , "name" : u"option" , "data" : [(u"value" , u"bar" )]},
150
+ {"type" : u"Characters" , "data" : u"quux" },
151
+ {"type" : u"EndTag" , "name" : u"option" , "data" : []},
152
+ {"type" : u"StartTag" , "name" : u"option" , "data" : [(u"value" , u"quux" )]},
153
+ {"type" : u"Characters" , "data" : u"quux" },
154
+ {"type" : u"EndTag" , "name" : u"option" , "data" : []},
155
+ {"type" : u"EndTag" , "name" : u"select" , "data" : []}],
156
+ FieldStorage ({"foo" : "bar" }),
157
+ [{"type" : u"StartTag" , "name" : u"select" , "data" : [(u"name" , u"foo" )]},
158
+ {"type" : u"StartTag" , "name" : u"option" , "data" : [(u"value" , u"bar" ), (u"selected" , u"" )]},
159
+ {"type" : u"Characters" , "data" : u"quux" },
160
+ {"type" : u"EndTag" , "name" : u"option" , "data" : []},
161
+ {"type" : u"StartTag" , "name" : u"option" , "data" : [(u"value" , u"quux" )]},
162
+ {"type" : u"Characters" , "data" : u"quux" },
163
+ {"type" : u"EndTag" , "name" : u"option" , "data" : []},
164
+ {"type" : u"EndTag" , "name" : u"select" , "data" : []}])
165
+
166
+ def testSingleSelectTwoOptionsWithValueShouldBeUnselected (self ):
167
+ self .runTest (
168
+ [{"type" : u"StartTag" , "name" : u"select" , "data" : [(u"name" , u"foo" )]},
169
+ {"type" : u"StartTag" , "name" : u"option" , "data" : [(u"value" , u"bar" )]},
170
+ {"type" : u"Characters" , "data" : u"quux" },
171
+ {"type" : u"EndTag" , "name" : u"option" , "data" : []},
172
+ {"type" : u"StartTag" , "name" : u"option" , "data" : [(u"value" , u"baz" )]},
173
+ {"type" : u"Characters" , "data" : u"quux" },
174
+ {"type" : u"EndTag" , "name" : u"option" , "data" : []},
175
+ {"type" : u"EndTag" , "name" : u"select" , "data" : []}],
176
+ FieldStorage ({"foo" : "quux" }),
177
+ [{"type" : u"StartTag" , "name" : u"select" , "data" : [(u"name" , u"foo" )]},
178
+ {"type" : u"StartTag" , "name" : u"option" , "data" : [(u"value" , u"bar" )]},
179
+ {"type" : u"Characters" , "data" : u"quux" },
180
+ {"type" : u"EndTag" , "name" : u"option" , "data" : []},
181
+ {"type" : u"StartTag" , "name" : u"option" , "data" : [(u"value" , u"baz" )]},
182
+ {"type" : u"Characters" , "data" : u"quux" },
183
+ {"type" : u"EndTag" , "name" : u"option" , "data" : []},
184
+ {"type" : u"EndTag" , "name" : u"select" , "data" : []}])
185
+
186
+ def testSingleSelectTwoOptionsWithoutValue (self ):
187
+ self .runTest (
188
+ [{"type" : u"StartTag" , "name" : u"select" , "data" : [(u"name" , u"foo" )]},
189
+ {"type" : u"StartTag" , "name" : u"option" , "data" : []},
190
+ {"type" : u"Characters" , "data" : u"bar" },
191
+ {"type" : u"EndTag" , "name" : u"option" , "data" : []},
192
+ {"type" : u"StartTag" , "name" : u"option" , "data" : []},
193
+ {"type" : u"Characters" , "data" : u"quux" },
194
+ {"type" : u"EndTag" , "name" : u"option" , "data" : []},
195
+ {"type" : u"EndTag" , "name" : u"select" , "data" : []}],
196
+ FieldStorage ({"foo" : "bar" }),
197
+ [{"type" : u"StartTag" , "name" : u"select" , "data" : [(u"name" , u"foo" )]},
198
+ {"type" : u"StartTag" , "name" : u"option" , "data" : [(u"selected" , u"" )]},
199
+ {"type" : u"Characters" , "data" : u"bar" },
200
+ {"type" : u"EndTag" , "name" : u"option" , "data" : []},
201
+ {"type" : u"StartTag" , "name" : u"option" , "data" : []},
202
+ {"type" : u"Characters" , "data" : u"quux" },
203
+ {"type" : u"EndTag" , "name" : u"option" , "data" : []},
204
+ {"type" : u"EndTag" , "name" : u"select" , "data" : []}])
205
+
206
+ def testSingleSelectTwoOptionsWithoutValueShouldBeUnselected (self ):
207
+ self .runTest (
208
+ [{"type" : u"StartTag" , "name" : u"select" , "data" : [(u"name" , u"foo" )]},
209
+ {"type" : u"StartTag" , "name" : u"option" , "data" : []},
210
+ {"type" : u"Characters" , "data" : u"bar" },
211
+ {"type" : u"EndTag" , "name" : u"option" , "data" : []},
212
+ {"type" : u"StartTag" , "name" : u"option" , "data" : []},
213
+ {"type" : u"Characters" , "data" : u"baz" },
214
+ {"type" : u"EndTag" , "name" : u"option" , "data" : []},
215
+ {"type" : u"EndTag" , "name" : u"select" , "data" : []}],
216
+ FieldStorage ({"foo" : "quux" }),
217
+ [{"type" : u"StartTag" , "name" : u"select" , "data" : [(u"name" , u"foo" )]},
218
+ {"type" : u"StartTag" , "name" : u"option" , "data" : []},
219
+ {"type" : u"Characters" , "data" : u"bar" },
220
+ {"type" : u"EndTag" , "name" : u"option" , "data" : []},
221
+ {"type" : u"StartTag" , "name" : u"option" , "data" : []},
222
+ {"type" : u"Characters" , "data" : u"baz" },
223
+ {"type" : u"EndTag" , "name" : u"option" , "data" : []},
224
+ {"type" : u"EndTag" , "name" : u"select" , "data" : []}])
225
+
226
+ def testSingleSelectMultiple (self ):
227
+ self .runTest (
228
+ [{"type" : u"StartTag" , "name" : u"select" , "data" : [(u"name" , u"foo" ), (u"multiple" , u"" )]},
229
+ {"type" : u"StartTag" , "name" : u"option" , "data" : [(u"value" , u"bar" )]},
230
+ {"type" : u"Characters" , "data" : u"quux" },
231
+ {"type" : u"EndTag" , "name" : u"option" , "data" : []},
232
+ {"type" : u"StartTag" , "name" : u"option" , "data" : [(u"value" , u"quux" )]},
233
+ {"type" : u"Characters" , "data" : u"quux" },
234
+ {"type" : u"EndTag" , "name" : u"option" , "data" : []},
235
+ {"type" : u"EndTag" , "name" : u"select" , "data" : []}],
236
+ FieldStorage ({"foo" : ["bar" , "quux" ]}),
237
+ [{"type" : u"StartTag" , "name" : u"select" , "data" : [(u"name" , u"foo" ), (u"multiple" , u"" )]},
238
+ {"type" : u"StartTag" , "name" : u"option" , "data" : [(u"value" , u"bar" ), (u"selected" , u"" )]},
239
+ {"type" : u"Characters" , "data" : u"quux" },
240
+ {"type" : u"EndTag" , "name" : u"option" , "data" : []},
241
+ {"type" : u"StartTag" , "name" : u"option" , "data" : [(u"value" , u"quux" ), (u"selected" , u"" )]},
242
+ {"type" : u"Characters" , "data" : u"quux" },
243
+ {"type" : u"EndTag" , "name" : u"option" , "data" : []},
244
+ {"type" : u"EndTag" , "name" : u"select" , "data" : []}])
245
+
246
+ def testTwoSelect (self ):
247
+ self .runTest (
248
+ [{"type" : u"StartTag" , "name" : u"select" , "data" : [(u"name" , u"foo" )]},
249
+ {"type" : u"StartTag" , "name" : u"option" , "data" : [(u"value" , u"bar" )]},
250
+ {"type" : u"Characters" , "data" : u"quux" },
251
+ {"type" : u"EndTag" , "name" : u"option" , "data" : []},
252
+ {"type" : u"StartTag" , "name" : u"option" , "data" : [(u"value" , u"quux" )]},
253
+ {"type" : u"Characters" , "data" : u"quux" },
254
+ {"type" : u"EndTag" , "name" : u"option" , "data" : []},
255
+ {"type" : u"EndTag" , "name" : u"select" , "data" : []},
256
+ {"type" : u"StartTag" , "name" : u"select" , "data" : [(u"name" , u"foo" )]},
257
+ {"type" : u"StartTag" , "name" : u"option" , "data" : [(u"value" , u"bar" )]},
258
+ {"type" : u"Characters" , "data" : u"quux" },
259
+ {"type" : u"EndTag" , "name" : u"option" , "data" : []},
260
+ {"type" : u"StartTag" , "name" : u"option" , "data" : [(u"value" , u"quux" )]},
261
+ {"type" : u"Characters" , "data" : u"quux" },
262
+ {"type" : u"EndTag" , "name" : u"option" , "data" : []},
263
+ {"type" : u"EndTag" , "name" : u"select" , "data" : []}],
264
+ FieldStorage ({"foo" : ["bar" , "quux" ]}),
265
+ [{"type" : u"StartTag" , "name" : u"select" , "data" : [(u"name" , u"foo" )]},
266
+ {"type" : u"StartTag" , "name" : u"option" , "data" : [(u"value" , u"bar" ), (u"selected" , u"" )]},
267
+ {"type" : u"Characters" , "data" : u"quux" },
268
+ {"type" : u"EndTag" , "name" : u"option" , "data" : []},
269
+ {"type" : u"StartTag" , "name" : u"option" , "data" : [(u"value" , u"quux" )]},
270
+ {"type" : u"Characters" , "data" : u"quux" },
271
+ {"type" : u"EndTag" , "name" : u"option" , "data" : []},
272
+ {"type" : u"EndTag" , "name" : u"select" , "data" : []},
273
+ {"type" : u"StartTag" , "name" : u"select" , "data" : [(u"name" , u"foo" )]},
274
+ {"type" : u"StartTag" , "name" : u"option" , "data" : [(u"value" , u"bar" )]},
275
+ {"type" : u"Characters" , "data" : u"quux" },
276
+ {"type" : u"EndTag" , "name" : u"option" , "data" : []},
277
+ {"type" : u"StartTag" , "name" : u"option" , "data" : [(u"value" , u"quux" ), (u"selected" , u"" )]},
278
+ {"type" : u"Characters" , "data" : u"quux" },
279
+ {"type" : u"EndTag" , "name" : u"option" , "data" : []},
280
+ {"type" : u"EndTag" , "name" : u"select" , "data" : []}])
281
+
90
282
def main ():
91
283
unittest .main ()
92
284
0 commit comments