1 /****************************************************************************
2 **
3 ** Copyright (C) 2015 The Qt Company Ltd.
4 ** Contact: http://www.qt.io/licensing/
5 **
6 ** This file is part of the autotests of the Qt Toolkit.
7 **
8 ** $QT_BEGIN_LICENSE:LGPL$
9 ** Commercial License Usage
10 ** Licensees holding valid commercial Qt licenses may use this file in
11 ** accordance with the commercial license agreement provided with the
12 ** Software or, alternatively, in accordance with the terms contained in
13 ** a written agreement between you and The Qt Company. For licensing terms
14 ** and conditions see http://www.qt.io/terms-conditions. For further
15 ** information use the contact form at http://www.qt.io/contact-us.
16 **
17 ** GNU Lesser General Public License Usage
18 ** Alternatively, this file may be used under the terms of the GNU Lesser
19 ** General Public License version 2.1 or version 3 as published by the Free
20 ** Software Foundation and appearing in the file LICENSE.LGPLv21 and
21 ** LICENSE.LGPLv3 included in the packaging of this file. Please review the
22 ** following information to ensure the GNU Lesser General Public License
23 ** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
24 ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
25 **
26 ** As a special exception, The Qt Company gives you certain additional
27 ** rights. These rights are described in The Qt Company LGPL Exception
28 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
29 **
30 ** GNU General Public License Usage
31 ** Alternatively, this file may be used under the terms of the GNU
32 ** General Public License version 3.0 as published by the Free Software
33 ** Foundation and appearing in the file LICENSE.GPL included in the
34 ** packaging of this file.  Please review the following information to
35 ** ensure the GNU General Public License version 3.0 requirements will be
36 ** met: http://www.gnu.org/copyleft/gpl.html.
37 **
38 ** $QT_END_LICENSE$
39 **
40 ****************************************************************************/
41 
42 #include <QtDebug>
43 
44 #include "qacceltreeresourceloader_p.h"
45 #include "qnetworkaccessdelegator_p.h"
46 
47 #include "Global.h"
48 #include "TestBaseLine.h"
49 #include "TestGroup.h"
50 
51 #include "XSDTestSuiteHandler.h"
52 #include "XSDTSTestCase.h"
53 
54 using namespace QPatternistSDK;
55 
56 extern QNetworkAccessManager s_networkManager;
57 
XSDTestSuiteHandler(const QUrl & catalogFile)58 XSDTestSuiteHandler::XSDTestSuiteHandler(const QUrl &catalogFile) : m_ts(0)
59                                                                     , m_catalogFile(catalogFile)
60                                                                     , m_inSchemaTest(false)
61                                                                     , m_inInstanceTest(false)
62                                                                     , m_inTestGroup(false)
63                                                                     , m_inDescription(false)
64                                                                     , m_schemaBlacklisted(false)
65                                                                     , m_counter(0)
66 {
67     Q_ASSERT(!m_catalogFile.isRelative());
68     m_ts = new TestSuite();
69     m_topLevelGroup = new TestGroup(m_ts);
70     m_topLevelGroup->setTitle("XML Schema Test Suite");
71     m_ts->appendChild(m_topLevelGroup);
72 
73     // exclude these test cases, as they break our current state machine
74     m_blackList << QLatin1String("addB099")
75                 << QLatin1String("addB118")
76                 << QLatin1String("elemJ003")
77                 << QLatin1String("elemJ011")
78                 << QLatin1String("elemZ004")
79                 << QLatin1String("elemZ020")
80                 << QLatin1String("groupH021v")
81                 << QLatin1String("groupJ009v")
82                 << QLatin1String("name00101m2")
83                 << QLatin1String("schL5")
84                 << QLatin1String("ste110")
85                 << QLatin1String("stZ007")
86                 << QLatin1String("stZ047")
87                 << QLatin1String("stZ055")
88                 << QLatin1String("addB049")
89                 << QLatin1String("addB068")
90                 << QLatin1String("addB078")
91                 << QLatin1String("addB078A")
92                 << QLatin1String("addB078B")
93                 << QLatin1String("addB167")
94                 << QLatin1String("addB191")
95                 << QLatin1String("isDefault060_2")
96                 << QLatin1String("isDefault069")
97                 << QLatin1String("annotB025")
98                 << QLatin1String("base64Binary_enumeration003_1321")
99                 << QLatin1String("anyURI_a001_1336")
100                 << QLatin1String("anyURI_a001_1336")
101                 << QLatin1String("anyURI_a003_1338")
102                 << QLatin1String("anyURI_a004_1339")
103                 << QLatin1String("anyURI_b004_1354")
104                 << QLatin1String("anyURI_b004_1354")
105                 << QLatin1String("anyURI_b006_1356")
106                 << QLatin1String("QName_length001_1357")
107                 << QLatin1String("QName_length003_1359")
108                 << QLatin1String("QName_minLength003_1362")
109                 << QLatin1String("QName_maxLength001_1364")
110                 << QLatin1String("NOTATION_length001_1372")
111                 << QLatin1String("NOTATION_length003_1374")
112                 << QLatin1String("NOTATION_minLength003_1377")
113                 << QLatin1String("NOTATION_maxLength001_1379")
114                 << QLatin1String("hexBinary003_2069")
115                 << QLatin1String("QName009_2092")
116                 << QLatin1String("dtZ107447_a_2245")
117                 << QLatin1String("elemE001")
118                 << QLatin1String("elemE002")
119                 << QLatin1String("elemE003")
120                 << QLatin1String("elemE004")
121                 << QLatin1String("elemE005")
122                 << QLatin1String("elemT026")
123                 << QLatin1String("elemT027")
124                 << QLatin1String("elemT028")
125                 << QLatin1String("elemT029")
126                 << QLatin1String("elemT054")
127                 << QLatin1String("elemT055")
128                 << QLatin1String("elemT056")
129                 << QLatin1String("elemT057")
130                 << QLatin1String("elemZ006")
131                 << QLatin1String("elemZ007")
132                 << QLatin1String("elemZ026")
133                 << QLatin1String("elemZ027_c")
134                 << QLatin1String("elemZ028c")
135                 << QLatin1String("elemZ028d")
136                 << QLatin1String("elemZ028f1")
137                 << QLatin1String("elemZ028f1")
138                 << QLatin1String("elemZ028f2")
139                 << QLatin1String("elemZ028f2")
140                 << QLatin1String("elemZ028f3")
141                 << QLatin1String("elemZ028f3")
142                 << QLatin1String("elemZ031")
143                 << QLatin1String("errF001")
144                 << QLatin1String("idC019")
145                 << QLatin1String("idL100")
146                 << QLatin1String("idZ011")
147                 << QLatin1String("idZ015")
148                 << QLatin1String("mgO013")
149                 << QLatin1String("particlesA012")
150                 << QLatin1String("particlesA013")
151                 << QLatin1String("particlesA014")
152                 << QLatin1String("particlesA015")
153                 << QLatin1String("particlesHa161")
154                 << QLatin1String("particlesHb008")
155                 << QLatin1String("particlesHb011")
156                 << QLatin1String("particlesIe003")
157                 << QLatin1String("particlesIg003")
158                 << QLatin1String("particlesIg004")
159                 << QLatin1String("particlesJb003")
160                 << QLatin1String("particlesJd003")
161                 << QLatin1String("particlesJf003")
162                 << QLatin1String("particlesJk003")
163                 << QLatin1String("particlesOb001")
164                 << QLatin1String("particlesOb002")
165                 << QLatin1String("particlesOb004")
166                 << QLatin1String("particlesOb008")
167                 << QLatin1String("particlesOb009")
168                 << QLatin1String("particlesOb013")
169                 << QLatin1String("particlesOb018")
170                 << QLatin1String("particlesQ005")
171                 << QLatin1String("particlesS002")
172                 << QLatin1String("particlesT002")
173                 << QLatin1String("particlesT009")
174                 << QLatin1String("particlesT014")
175                 << QLatin1String("particlesV001")
176                 << QLatin1String("particlesV002")
177                 << QLatin1String("particlesV020")
178                 << QLatin1String("particlesZ001")
179                 << QLatin1String("particlesZ005")
180                 << QLatin1String("particlesZ007")
181                 << QLatin1String("particlesZ023")
182                 << QLatin1String("particlesZ024")
183                 << QLatin1String("particlesZ026")
184                 << QLatin1String("particlesZ028")
185                 << QLatin1String("particlesZ033_c")
186                 << QLatin1String("particlesZ033_d")
187                 << QLatin1String("particlesZ033_e")
188                 << QLatin1String("particlesZ033_f")
189                 << QLatin1String("particlesZ033_g")
190                 << QLatin1String("particlesZ034_a1")
191                 << QLatin1String("particlesZ034_a2")
192                 << QLatin1String("particlesZ034_a3")
193                 << QLatin1String("particlesZ034_b")
194                 << QLatin1String("particlesZ035_a")
195                 << QLatin1String("particlesZ035_b")
196                 << QLatin1String("particlesZ036_a")
197                 << QLatin1String("particlesZ036_b1")
198                 << QLatin1String("particlesZ036_b2")
199                 << QLatin1String("particlesZ036_c")
200 /*
201                 << QLatin1String("reC65")
202                 << QLatin1String("reC66")
203                 << QLatin1String("reC67")
204                 << QLatin1String("reC68")
205                 << QLatin1String("reF58")
206                 << QLatin1String("reG50")
207                 << QLatin1String("reJ11")
208                 << QLatin1String("reJ13")
209                 << QLatin1String("reJ19")
210                 << QLatin1String("reJ21")
211                 << QLatin1String("reJ23")
212                 << QLatin1String("reJ25")
213                 << QLatin1String("reJ29")
214                 << QLatin1String("reJ31")
215                 << QLatin1String("reJ33")
216                 << QLatin1String("reJ35")
217                 << QLatin1String("reJ61")
218                 << QLatin1String("reJ69")
219                 << QLatin1String("reJ75")
220                 << QLatin1String("reJ77")
221                 << QLatin1String("reL98")
222                 << QLatin1String("reL99")
223                 << QLatin1String("reM98")
224                 << QLatin1String("reN99")
225                 << QLatin1String("reS21")
226                 << QLatin1String("reS42")
227                 << QLatin1String("reT63")
228                 << QLatin1String("reT84")
229                 << QLatin1String("reDG2")
230                 << QLatin1String("RegexTest_9")
231                 << QLatin1String("RegexTest_11")
232                 << QLatin1String("RegexTest_14")
233                 << QLatin1String("RegexTest_15")
234                 << QLatin1String("RegexTest_16")
235                 << QLatin1String("RegexTest_17")
236                 << QLatin1String("RegexTest_23")
237                 << QLatin1String("RegexTest_24")
238                 << QLatin1String("RegexTest_25")
239                 << QLatin1String("RegexTest_26")
240                 << QLatin1String("RegexTest_27")
241                 << QLatin1String("RegexTest_28")
242                 << QLatin1String("RegexTest_30")
243                 << QLatin1String("RegexTest_30")
244                 << QLatin1String("RegexTest_33")
245                 << QLatin1String("RegexTest_34")
246                 << QLatin1String("RegexTest_34")
247                 << QLatin1String("RegexTest_43")
248                 << QLatin1String("RegexTest_44")
249                 << QLatin1String("RegexTest_45")
250                 << QLatin1String("RegexTest_46")
251                 << QLatin1String("RegexTest_47")
252                 << QLatin1String("RegexTest_48")
253                 << QLatin1String("RegexTest_49")
254                 << QLatin1String("RegexTest_50")
255                 << QLatin1String("RegexTest_51")
256                 << QLatin1String("RegexTest_52")
257                 << QLatin1String("RegexTest_53")
258                 << QLatin1String("RegexTest_54")
259                 << QLatin1String("RegexTest_55")
260                 << QLatin1String("RegexTest_56")
261                 << QLatin1String("RegexTest_57")
262                 << QLatin1String("RegexTest_57")
263                 << QLatin1String("RegexTest_58")
264                 << QLatin1String("RegexTest_58")
265                 << QLatin1String("RegexTest_65")
266                 << QLatin1String("RegexTest_113")
267                 << QLatin1String("RegexTest_116")
268                 << QLatin1String("RegexTest_119")
269                 << QLatin1String("RegexTest_120")
270                 << QLatin1String("RegexTest_121")
271                 << QLatin1String("RegexTest_141")
272                 << QLatin1String("RegexTest_142")
273                 << QLatin1String("RegexTest_143")
274                 << QLatin1String("RegexTest_145")
275                 << QLatin1String("RegexTest_146")
276                 << QLatin1String("RegexTest_147")
277                 << QLatin1String("RegexTest_148")
278                 << QLatin1String("RegexTest_149")
279                 << QLatin1String("RegexTest_150")
280                 << QLatin1String("RegexTest_151")
281                 << QLatin1String("RegexTest_152")
282                 << QLatin1String("RegexTest_154")
283                 << QLatin1String("RegexTest_155")
284                 << QLatin1String("RegexTest_156")
285                 << QLatin1String("RegexTest_157")
286                 << QLatin1String("RegexTest_158")
287                 << QLatin1String("RegexTest_163")
288                 << QLatin1String("RegexTest_164")
289                 << QLatin1String("RegexTest_165")
290                 << QLatin1String("RegexTest_166")
291                 << QLatin1String("RegexTest_167")
292                 << QLatin1String("RegexTest_168")
293                 << QLatin1String("RegexTest_169")
294                 << QLatin1String("RegexTest_170")
295                 << QLatin1String("RegexTest_171")
296                 << QLatin1String("RegexTest_172")
297                 << QLatin1String("RegexTest_173")
298                 << QLatin1String("RegexTest_174")
299                 << QLatin1String("RegexTest_178")
300                 << QLatin1String("RegexTest_194")
301                 << QLatin1String("RegexTest_194")
302                 << QLatin1String("RegexTest_195")
303                 << QLatin1String("RegexTest_195")
304                 << QLatin1String("RegexTest_196")
305                 << QLatin1String("RegexTest_196")
306                 << QLatin1String("RegexTest_197")
307                 << QLatin1String("RegexTest_198")
308                 << QLatin1String("RegexTest_199")
309                 << QLatin1String("RegexTest_200")
310                 << QLatin1String("RegexTest_200")
311                 << QLatin1String("RegexTest_201")
312                 << QLatin1String("RegexTest_201")
313                 << QLatin1String("RegexTest_202")
314                 << QLatin1String("RegexTest_202")
315                 << QLatin1String("RegexTest_203")
316                 << QLatin1String("RegexTest_204")
317                 << QLatin1String("RegexTest_205")
318                 << QLatin1String("RegexTest_206")
319                 << QLatin1String("RegexTest_207")
320                 << QLatin1String("RegexTest_208")
321                 << QLatin1String("RegexTest_209")
322                 << QLatin1String("RegexTest_209")
323                 << QLatin1String("RegexTest_210")
324                 << QLatin1String("RegexTest_210")
325                 << QLatin1String("RegexTest_211")
326                 << QLatin1String("RegexTest_211")
327                 << QLatin1String("RegexTest_212")
328                 << QLatin1String("RegexTest_213")
329                 << QLatin1String("RegexTest_214")
330                 << QLatin1String("RegexTest_215")
331                 << QLatin1String("RegexTest_216")
332                 << QLatin1String("RegexTest_217")
333                 << QLatin1String("RegexTest_218")
334                 << QLatin1String("RegexTest_220")
335                 << QLatin1String("RegexTest_221")
336                 << QLatin1String("RegexTest_222")
337                 << QLatin1String("RegexTest_226")
338                 << QLatin1String("RegexTest_230")
339                 << QLatin1String("RegexTest_232")
340                 << QLatin1String("RegexTest_233")
341                 << QLatin1String("RegexTest_294")
342                 << QLatin1String("RegexTest_294")
343                 << QLatin1String("RegexTest_295")
344                 << QLatin1String("RegexTest_295")
345                 << QLatin1String("RegexTest_299")
346                 << QLatin1String("RegexTest_300")
347                 << QLatin1String("RegexTest_301")
348                 << QLatin1String("RegexTest_302")
349                 << QLatin1String("RegexTest_303")
350                 << QLatin1String("RegexTest_304")
351                 << QLatin1String("RegexTest_305")
352                 << QLatin1String("RegexTest_306")
353                 << QLatin1String("RegexTest_307")
354                 << QLatin1String("RegexTest_308")
355                 << QLatin1String("RegexTest_309")
356                 << QLatin1String("RegexTest_310")
357                 << QLatin1String("RegexTest_311")
358                 << QLatin1String("RegexTest_312")
359                 << QLatin1String("RegexTest_313")
360                 << QLatin1String("RegexTest_314")
361                 << QLatin1String("RegexTest_315")
362                 << QLatin1String("RegexTest_315")
363                 << QLatin1String("RegexTest_316")
364                 << QLatin1String("RegexTest_316")
365                 << QLatin1String("RegexTest_317")
366                 << QLatin1String("RegexTest_317")
367                 << QLatin1String("RegexTest_440")
368                 << QLatin1String("RegexTest_441")
369                 << QLatin1String("RegexTest_442")
370                 << QLatin1String("RegexTest_443")
371                 << QLatin1String("RegexTest_448")
372                 << QLatin1String("RegexTest_449")
373                 << QLatin1String("RegexTest_450")
374                 << QLatin1String("RegexTest_451")
375                 << QLatin1String("RegexTest_458")
376                 << QLatin1String("RegexTest_464")
377                 << QLatin1String("RegexTest_464")
378                 << QLatin1String("RegexTest_465")
379                 << QLatin1String("RegexTest_469")
380                 << QLatin1String("RegexTest_470")
381                 << QLatin1String("RegexTest_471")
382                 << QLatin1String("RegexTest_472")
383                 << QLatin1String("RegexTest_473")
384                 << QLatin1String("RegexTest_477")
385                 << QLatin1String("RegexTest_478")
386                 << QLatin1String("RegexTest_478")
387                 << QLatin1String("RegexTest_479")
388                 << QLatin1String("RegexTest_480")
389                 << QLatin1String("RegexTest_481")
390                 << QLatin1String("RegexTest_482")
391                 << QLatin1String("RegexTest_482")
392                 << QLatin1String("RegexTest_483")
393                 << QLatin1String("RegexTest_483")
394                 << QLatin1String("RegexTest_484")
395                 << QLatin1String("RegexTest_487")
396                 << QLatin1String("RegexTest_516")
397                 << QLatin1String("RegexTest_516")
398                 << QLatin1String("RegexTest_517")
399                 << QLatin1String("RegexTest_517")
400                 << QLatin1String("RegexTest_518")
401                 << QLatin1String("RegexTest_518")
402                 << QLatin1String("RegexTest_519")
403                 << QLatin1String("RegexTest_519")
404                 << QLatin1String("RegexTest_521")
405                 << QLatin1String("RegexTest_523")
406                 << QLatin1String("RegexTest_524")
407                 << QLatin1String("RegexTest_524")
408                 << QLatin1String("RegexTest_586")
409                 << QLatin1String("RegexTest_587")
410                 << QLatin1String("RegexTest_592")
411                 << QLatin1String("RegexTest_593")
412                 << QLatin1String("RegexTest_594")
413                 << QLatin1String("RegexTest_595")
414                 << QLatin1String("RegexTest_596")
415                 << QLatin1String("RegexTest_597")
416                 << QLatin1String("RegexTest_598")
417                 << QLatin1String("RegexTest_599")
418                 << QLatin1String("RegexTest_600")
419                 << QLatin1String("RegexTest_601")
420                 << QLatin1String("RegexTest_602")
421                 << QLatin1String("RegexTest_603")
422                 << QLatin1String("RegexTest_604")
423                 << QLatin1String("RegexTest_605")
424                 << QLatin1String("RegexTest_648")
425                 << QLatin1String("RegexTest_655")
426                 << QLatin1String("RegexTest_688")
427                 << QLatin1String("RegexTest_696")
428                 << QLatin1String("RegexTest_697")
429                 << QLatin1String("RegexTest_698")
430                 << QLatin1String("RegexTest_700")
431                 << QLatin1String("RegexTest_701")
432                 << QLatin1String("RegexTest_702")
433                 << QLatin1String("RegexTest_703")
434                 << QLatin1String("RegexTest_704")
435                 << QLatin1String("RegexTest_705")
436                 << QLatin1String("RegexTest_706")
437                 << QLatin1String("RegexTest_707")
438                 << QLatin1String("RegexTest_717")
439                 << QLatin1String("RegexTest_718")
440                 << QLatin1String("RegexTest_719")
441                 << QLatin1String("RegexTest_724")
442                 << QLatin1String("RegexTest_725")
443                 << QLatin1String("RegexTest_726")
444                 << QLatin1String("RegexTest_727")
445                 << QLatin1String("RegexTest_728")
446                 << QLatin1String("RegexTest_729")
447                 << QLatin1String("RegexTest_730")
448                 << QLatin1String("RegexTest_731")
449                 << QLatin1String("RegexTest_732")
450                 << QLatin1String("RegexTest_733")
451                 << QLatin1String("RegexTest_743")
452                 << QLatin1String("RegexTest_755")
453                 << QLatin1String("RegexTest_756")
454                 << QLatin1String("RegexTest_761")
455                 << QLatin1String("RegexTest_762")
456                 << QLatin1String("RegexTest_781")
457                 << QLatin1String("RegexTest_782")
458                 << QLatin1String("RegexTest_783")
459                 << QLatin1String("RegexTest_790")
460                 << QLatin1String("RegexTest_791")
461                 << QLatin1String("RegexTest_824")
462                 << QLatin1String("RegexTest_826")
463                 << QLatin1String("RegexTest_827")
464                 << QLatin1String("RegexTest_836")
465                 << QLatin1String("RegexTest_837")
466                 << QLatin1String("RegexTest_841")
467                 << QLatin1String("RegexTest_842")
468                 << QLatin1String("RegexTest_843")
469                 << QLatin1String("RegexTest_844")
470                 << QLatin1String("RegexTest_845")
471                 << QLatin1String("RegexTest_846")
472                 << QLatin1String("RegexTest_847")
473                 << QLatin1String("RegexTest_848")
474                 << QLatin1String("RegexTest_851")
475                 << QLatin1String("RegexTest_852")
476                 << QLatin1String("RegexTest_853")
477                 << QLatin1String("RegexTest_854")
478                 << QLatin1String("RegexTest_855")
479                 << QLatin1String("RegexTest_856")
480                 << QLatin1String("RegexTest_857")
481                 << QLatin1String("RegexTest_861")
482                 << QLatin1String("RegexTest_862")
483                 << QLatin1String("RegexTest_863")
484                 << QLatin1String("RegexTest_864")
485                 << QLatin1String("RegexTest_865")
486                 << QLatin1String("RegexTest_866")
487                 << QLatin1String("RegexTest_870")
488                 << QLatin1String("RegexTest_879")
489                 << QLatin1String("RegexTest_880")
490                 << QLatin1String("RegexTest_888")
491                 << QLatin1String("RegexTest_889")
492                 << QLatin1String("RegexTest_890")
493                 << QLatin1String("RegexTest_891")
494                 << QLatin1String("RegexTest_892")
495                 << QLatin1String("RegexTest_893")
496                 << QLatin1String("RegexTest_894")
497                 << QLatin1String("RegexTest_895")
498                 << QLatin1String("RegexTest_896")
499                 << QLatin1String("RegexTest_897")
500                 << QLatin1String("RegexTest_898")
501                 << QLatin1String("RegexTest_899")
502                 << QLatin1String("RegexTest_900")
503                 << QLatin1String("RegexTest_901")
504                 << QLatin1String("RegexTest_902")
505                 << QLatin1String("RegexTest_903")
506                 << QLatin1String("RegexTest_904")
507                 << QLatin1String("RegexTest_905")
508                 << QLatin1String("RegexTest_906")
509                 << QLatin1String("RegexTest_907")
510                 << QLatin1String("RegexTest_908")
511                 << QLatin1String("RegexTest_909")
512                 << QLatin1String("RegexTest_910")
513                 << QLatin1String("RegexTest_911")
514                 << QLatin1String("RegexTest_912")
515                 << QLatin1String("RegexTest_913")
516                 << QLatin1String("RegexTest_914")
517                 << QLatin1String("RegexTest_915")
518                 << QLatin1String("RegexTest_916")
519                 << QLatin1String("RegexTest_917")
520                 << QLatin1String("RegexTest_918")
521                 << QLatin1String("RegexTest_919")
522                 << QLatin1String("RegexTest_920")
523                 << QLatin1String("RegexTest_921")
524                 << QLatin1String("RegexTest_922")
525                 << QLatin1String("RegexTest_923")
526                 << QLatin1String("RegexTest_924")
527                 << QLatin1String("RegexTest_925")
528                 << QLatin1String("RegexTest_926")
529                 << QLatin1String("RegexTest_928")
530                 << QLatin1String("RegexTest_929")
531                 << QLatin1String("RegexTest_930")
532                 << QLatin1String("RegexTest_936")
533                 << QLatin1String("RegexTest_937")
534                 << QLatin1String("RegexTest_938")
535                 << QLatin1String("RegexTest_939")
536                 << QLatin1String("RegexTest_940")
537                 << QLatin1String("RegexTest_941")
538                 << QLatin1String("RegexTest_942")
539                 << QLatin1String("RegexTest_943")
540                 << QLatin1String("RegexTest_944")
541                 << QLatin1String("RegexTest_945")
542                 << QLatin1String("RegexTest_946")
543                 << QLatin1String("RegexTest_949")
544                 << QLatin1String("RegexTest_950")
545                 << QLatin1String("RegexTest_951")
546                 << QLatin1String("RegexTest_952")
547                 << QLatin1String("RegexTest_953")
548                 << QLatin1String("RegexTest_954")
549                 << QLatin1String("RegexTest_955")
550                 << QLatin1String("RegexTest_956")
551                 << QLatin1String("RegexTest_957")
552                 << QLatin1String("RegexTest_958")
553                 << QLatin1String("RegexTest_959")
554                 << QLatin1String("RegexTest_960")
555                 << QLatin1String("RegexTest_961")
556                 << QLatin1String("RegexTest_962")
557                 << QLatin1String("RegexTest_963")
558                 << QLatin1String("RegexTest_964")
559                 << QLatin1String("RegexTest_976")
560                 << QLatin1String("RegexTest_977")
561                 << QLatin1String("RegexTest_988")
562                 << QLatin1String("RegexTest_989")
563                 << QLatin1String("RegexTest_990")
564                 << QLatin1String("RegexTest_991")
565                 << QLatin1String("RegexTest_994")
566                 << QLatin1String("RegexTest_995")
567                 << QLatin1String("RegexTest_996")
568                 << QLatin1String("RegexTest_997")
569                 << QLatin1String("RegexTest_1000")
570                 << QLatin1String("RegexTest_1001")
571                 << QLatin1String("RegexTest_1002")
572                 << QLatin1String("RegexTest_1003")
573                 << QLatin1String("RegexTest_1004")
574                 << QLatin1String("RegexTest_1007")
575                 << QLatin1String("RegexTest_1008")
576                 << QLatin1String("RegexTest_1009")
577                 << QLatin1String("RegexTest_1010")
578                 << QLatin1String("RegexTest_1011")
579                 << QLatin1String("RegexTest_1012")
580                 << QLatin1String("RegexTest_1013")
581                 << QLatin1String("RegexTest_1014")
582                 << QLatin1String("RegexTest_1015")
583                 << QLatin1String("RegexTest_1016")
584                 << QLatin1String("RegexTest_1017")
585                 << QLatin1String("RegexTest_1018")
586                 << QLatin1String("RegexTest_1019")
587                 << QLatin1String("RegexTest_1070")
588                 << QLatin1String("RegexTest_1071")
589                 << QLatin1String("RegexTest_1076")
590                 << QLatin1String("RegexTest_1077")
591                 << QLatin1String("RegexTest_1078")
592                 << QLatin1String("RegexTest_1079")
593                 << QLatin1String("RegexTest_1080")
594                 << QLatin1String("RegexTest_1081")
595                 << QLatin1String("RegexTest_1082")
596                 << QLatin1String("RegexTest_1083")
597                 << QLatin1String("RegexTest_1084")
598                 << QLatin1String("RegexTest_1085")
599                 << QLatin1String("RegexTest_1086")
600                 << QLatin1String("RegexTest_1087")
601                 << QLatin1String("RegexTest_1088")
602                 << QLatin1String("RegexTest_1089")
603                 << QLatin1String("RegexTest_1132")
604                 << QLatin1String("RegexTest_1139")
605                 << QLatin1String("RegexTest_1172")
606                 << QLatin1String("RegexTest_1180")
607                 << QLatin1String("RegexTest_1181")
608                 << QLatin1String("RegexTest_1182")
609                 << QLatin1String("RegexTest_1184")
610                 << QLatin1String("RegexTest_1185")
611                 << QLatin1String("RegexTest_1186")
612                 << QLatin1String("RegexTest_1187")
613                 << QLatin1String("RegexTest_1188")
614                 << QLatin1String("RegexTest_1189")
615                 << QLatin1String("RegexTest_1190")
616                 << QLatin1String("RegexTest_1191")
617                 << QLatin1String("RegexTest_1201")
618                 << QLatin1String("RegexTest_1202")
619                 << QLatin1String("RegexTest_1203")
620                 << QLatin1String("RegexTest_1208")
621                 << QLatin1String("RegexTest_1209")
622                 << QLatin1String("RegexTest_1210")
623                 << QLatin1String("RegexTest_1211")
624                 << QLatin1String("RegexTest_1212")
625                 << QLatin1String("RegexTest_1213")
626                 << QLatin1String("RegexTest_1214")
627                 << QLatin1String("RegexTest_1215")
628                 << QLatin1String("RegexTest_1216")
629                 << QLatin1String("RegexTest_1217")
630                 << QLatin1String("RegexTest_1227")
631                 << QLatin1String("RegexTest_1239")
632                 << QLatin1String("RegexTest_1240")
633                 << QLatin1String("RegexTest_1245")
634                 << QLatin1String("RegexTest_1246")
635                 << QLatin1String("RegexTest_1265")
636                 << QLatin1String("RegexTest_1266")
637                 << QLatin1String("RegexTest_1267")
638                 << QLatin1String("RegexTest_1274")
639                 << QLatin1String("RegexTest_1275")
640                 << QLatin1String("RegexTest_1308")
641                 << QLatin1String("RegexTest_1310")
642                 << QLatin1String("RegexTest_1311")
643                 << QLatin1String("RegexTest_1320")
644                 << QLatin1String("RegexTest_1321")
645                 << QLatin1String("RegexTest_1322")
646                 << QLatin1String("RegexTest_1323")
647                 << QLatin1String("RegexTest_1324")
648                 << QLatin1String("RegexTest_1325")
649                 << QLatin1String("RegexTest_1326")
650                 << QLatin1String("RegexTest_1327")
651                 << QLatin1String("RegexTest_1328")
652                 << QLatin1String("RegexTest_1329")
653                 << QLatin1String("RegexTest_1330")
654                 << QLatin1String("RegexTest_1331")
655                 << QLatin1String("RegexTest_1332")
656                 << QLatin1String("RegexTest_1335")
657                 << QLatin1String("RegexTest_1336")
658                 << QLatin1String("RegexTest_1337")
659                 << QLatin1String("RegexTest_1338")
660                 << QLatin1String("RegexTest_1339")
661                 << QLatin1String("RegexTest_1340")
662                 << QLatin1String("RegexTest_1341")
663                 << QLatin1String("RegexTest_1345")
664                 << QLatin1String("RegexTest_1346")
665                 << QLatin1String("RegexTest_1347")
666                 << QLatin1String("RegexTest_1348")
667                 << QLatin1String("RegexTest_1349")
668                 << QLatin1String("RegexTest_1350")
669                 << QLatin1String("RegexTest_1354")
670                 << QLatin1String("RegexTest_1363")
671                 << QLatin1String("RegexTest_1364")
672                 << QLatin1String("RegexTest_1365")
673                 << QLatin1String("RegexTest_1372")
674                 << QLatin1String("RegexTest_1373")
675                 << QLatin1String("RegexTest_1374")
676                 << QLatin1String("RegexTest_1375")
677                 << QLatin1String("RegexTest_1376")
678                 << QLatin1String("RegexTest_1377")
679                 << QLatin1String("RegexTest_1378")
680                 << QLatin1String("RegexTest_1379")
681                 << QLatin1String("RegexTest_1380")
682                 << QLatin1String("RegexTest_1381")
683                 << QLatin1String("RegexTest_1382")
684                 << QLatin1String("RegexTest_1383")
685                 << QLatin1String("RegexTest_1384")
686                 << QLatin1String("RegexTest_1385")
687                 << QLatin1String("RegexTest_1386")
688                 << QLatin1String("RegexTest_1387")
689                 << QLatin1String("RegexTest_1388")
690                 << QLatin1String("RegexTest_1389")
691                 << QLatin1String("RegexTest_1390")
692                 << QLatin1String("RegexTest_1391")
693                 << QLatin1String("RegexTest_1392")
694                 << QLatin1String("RegexTest_1393")
695                 << QLatin1String("RegexTest_1394")
696                 << QLatin1String("RegexTest_1395")
697                 << QLatin1String("RegexTest_1396")
698                 << QLatin1String("RegexTest_1397")
699                 << QLatin1String("RegexTest_1398")
700                 << QLatin1String("RegexTest_1399")
701                 << QLatin1String("RegexTest_1400")
702                 << QLatin1String("RegexTest_1401")
703                 << QLatin1String("RegexTest_1402")
704                 << QLatin1String("RegexTest_1403")
705                 << QLatin1String("RegexTest_1404")
706                 << QLatin1String("RegexTest_1405")
707                 << QLatin1String("RegexTest_1406")
708                 << QLatin1String("RegexTest_1407")
709                 << QLatin1String("RegexTest_1408")
710                 << QLatin1String("RegexTest_1409")
711                 << QLatin1String("RegexTest_1410")
712                 << QLatin1String("RegexTest_1412")
713                 << QLatin1String("RegexTest_1413")
714                 << QLatin1String("RegexTest_1414")
715                 << QLatin1String("RegexTest_1420")
716                 << QLatin1String("RegexTest_1421")
717                 << QLatin1String("RegexTest_1422")
718                 << QLatin1String("RegexTest_1423")
719                 << QLatin1String("RegexTest_1424")
720                 << QLatin1String("RegexTest_1425")
721                 << QLatin1String("RegexTest_1426")
722                 << QLatin1String("RegexTest_1427")
723                 << QLatin1String("RegexTest_1428")
724                 << QLatin1String("RegexTest_1429")
725                 << QLatin1String("RegexTest_1430")
726                 << QLatin1String("RegexTest_1433")
727                 << QLatin1String("RegexTest_1434")
728                 << QLatin1String("RegexTest_1435")
729                 << QLatin1String("RegexTest_1436")
730                 << QLatin1String("RegexTest_1437")
731                 << QLatin1String("RegexTest_1438")
732                 << QLatin1String("RegexTest_1439")
733                 << QLatin1String("RegexTest_1440")
734                 << QLatin1String("RegexTest_1441")
735                 << QLatin1String("RegexTest_1442")
736                 << QLatin1String("RegexTest_1443")
737                 << QLatin1String("RegexTest_1444")
738                 << QLatin1String("RegexTest_1445")
739                 << QLatin1String("RegexTest_1446")
740                 << QLatin1String("RegexTest_1447")
741                 << QLatin1String("RegexTest_1448")
742                 << QLatin1String("RegexTest_1451")
743                 << QLatin1String("RegexTest_1452")
744                 << QLatin1String("RegexTest_1453")
745                 << QLatin1String("RegexTest_1454")
746                 << QLatin1String("RegexTest_1455")
747                 << QLatin1String("RegexTest_1456")
748                 << QLatin1String("RegexTest_1472")
749                 << QLatin1String("RegexTest_1473")
750                 << QLatin1String("RegexTest_1474")
751                 << QLatin1String("RegexTest_1475")
752                 << QLatin1String("RegexTest_1478")
753                 << QLatin1String("RegexTest_1479")
754                 << QLatin1String("RegexTest_1480")
755                 << QLatin1String("RegexTest_1481")
756                 << QLatin1String("RegexTest_1484")
757                 << QLatin1String("RegexTest_1485")
758                 << QLatin1String("RegexTest_1486")
759                 << QLatin1String("RegexTest_1487")
760                 << QLatin1String("RegexTest_1488")
761                 << QLatin1String("RegexTest_1491")
762                 << QLatin1String("RegexTest_1492")
763                 << QLatin1String("RegexTest_1493")
764                 << QLatin1String("RegexTest_1494")
765                 << QLatin1String("RegexTest_1495")
766                 << QLatin1String("RegexTest_1496")
767                 << QLatin1String("RegexTest_1497")
768                 << QLatin1String("RegexTest_1498")
769                 << QLatin1String("RegexTest_1499")
770                 << QLatin1String("RegexTest_1500")
771                 << QLatin1String("RegexTest_1501")
772                 << QLatin1String("RegexTest_1502")
773                 << QLatin1String("RegexTest_1503")
774                 << QLatin1String("RegexTest_1543")
775                 << QLatin1String("RegexTest_1544")
776                 << QLatin1String("reZ001")
777 */
778                 << QLatin1String("schA2")
779                 << QLatin1String("schA5")
780                 << QLatin1String("schA7")
781                 << QLatin1String("schD8")
782                 << QLatin1String("schG3")
783                 << QLatin1String("schG6")
784                 << QLatin1String("schG9")
785                 << QLatin1String("schG11")
786                 << QLatin1String("schG12")
787                 << QLatin1String("schU1")
788                 << QLatin1String("schU3")
789                 << QLatin1String("schU4")
790                 << QLatin1String("schU5")
791                 << QLatin1String("schZ004")
792                 << QLatin1String("schZ005")
793                 << QLatin1String("schZ012_a")
794                 << QLatin1String("stZ041")
795                 << QLatin1String("wildZ010");
796 
797 }
798 
startElement(const QString & namespaceURI,const QString & localName,const QString &,const QXmlAttributes & atts)799 bool XSDTestSuiteHandler::startElement(const QString &namespaceURI,
800                                         const QString &localName,
801                                         const QString &/*qName*/,
802                                         const QXmlAttributes &atts)
803 {
804     if(namespaceURI != QString::fromLatin1("http://www.w3.org/XML/2004/xml-schema-test-suite/"))
805         return true;
806 
807     if (localName == QLatin1String("testSet")) {
808         m_currentTestSet = new TestGroup(m_topLevelGroup);
809         Q_ASSERT(m_currentTestSet);
810         m_currentTestSet->setTitle(atts.value("name"));
811         m_topLevelGroup->appendChild(m_currentTestSet);
812     } else if (localName == QLatin1String("testGroup")) {
813         m_currentTestGroup = new TestGroup(m_currentTestSet);
814         Q_ASSERT(m_currentTestGroup);
815         m_currentTestGroup->setTitle(atts.value("name"));
816         m_currentTestSet->appendChild(m_currentTestGroup);
817         m_inTestGroup = true;
818     } else if (localName == QLatin1String("schemaTest")) {
819         if (m_blackList.contains(atts.value("name"))) {
820             m_currentTestCase = 0;
821             m_schemaBlacklisted = true;
822             return true;
823         }
824         m_schemaBlacklisted = false;
825 
826         m_currentTestCase = new XSDTSTestCase(TestCase::Standard, m_currentTestGroup, XSDTSTestCase::SchemaTest);
827         Q_ASSERT(m_currentTestCase);
828         m_counter++;
829         m_currentTestCase->setName(QString::number(m_counter) + atts.value("name"));
830         m_currentTestGroup->appendChild(m_currentTestCase);
831         m_currentTestCase->setParent(m_currentTestGroup);
832 
833         m_inSchemaTest = true;
834     } else if (localName == QLatin1String("instanceTest")) {
835         if (m_schemaBlacklisted) {
836             m_currentTestCase = 0;
837             return true;
838         }
839 
840         m_currentTestCase = new XSDTSTestCase(TestCase::Standard, m_currentTestGroup, XSDTSTestCase::InstanceTest);
841         Q_ASSERT(m_currentTestCase);
842         m_counter++;
843         m_currentTestCase->setName(QString::number(m_counter) + atts.value("name"));
844         m_currentTestGroup->appendChild(m_currentTestCase);
845 
846         m_inInstanceTest = true;
847     } else if (localName == QLatin1String("schemaDocument") || localName == QLatin1String("instanceDocument")) {
848         if (m_inSchemaTest) {
849             m_currentTestCase->setSchemaUri(QUrl(atts.value("xlink:href")));
850             if (m_currentSchemaLink.isEmpty()) // we only use the first schema document for validation
851                 m_currentSchemaLink = atts.value("xlink:href");
852         }
853         if (m_inInstanceTest) {
854             m_currentTestCase->setInstanceUri(QUrl(atts.value("xlink:href")));
855             m_currentTestCase->setSchemaUri(QUrl(m_currentSchemaLink));
856         }
857     } else if (localName == QLatin1String("expected") && (m_inSchemaTest || m_inInstanceTest)) {
858         TestBaseLine *baseLine = new TestBaseLine(TestBaseLine::SchemaIsValid);
859         if (atts.value("validity") == QLatin1String("valid")) {
860             baseLine->setDetails(QLatin1String("true"));
861             m_currentTestCase->setName(m_currentTestCase->name() + QLatin1String(" tokoe:valid"));
862         } else {
863             baseLine->setDetails(QLatin1String("false"));
864             m_currentTestCase->setName(m_currentTestCase->name() + QLatin1String(" tokoe:invalid"));
865         }
866 
867         m_currentTestCase->addBaseLine(baseLine);
868     } else if (localName == QLatin1String("documentation") && m_inTestGroup) {
869         m_inDescription = true;
870     }
871 
872     return true;
873 }
874 
endElement(const QString &,const QString & localName,const QString &)875 bool XSDTestSuiteHandler::endElement(const QString &/*namespaceURI*/,
876                                       const QString &localName,
877                                       const QString &/*qName*/)
878 {
879     if (localName == QLatin1String("testGroup")) {
880         m_inTestGroup = false;
881         m_currentTestGroup->setDescription(m_documentation);
882         m_documentation.clear();
883         m_currentSchemaLink.clear();
884 
885         if (m_currentTestGroup->childCount() == 0)
886             m_currentTestSet->removeLast();
887     } else if (localName == QLatin1String("schemaTest"))
888         m_inSchemaTest = false;
889     else if (localName == QLatin1String("instanceTest"))
890         m_inInstanceTest = false;
891     else if (localName == QLatin1String("documentation"))
892         m_inDescription = false;
893 
894     return true;
895 }
896 
characters(const QString & ch)897 bool XSDTestSuiteHandler::characters(const QString &ch)
898 {
899     if (m_inDescription)
900         m_documentation += ch;
901 
902     return true;
903 }
904 
testSuite() const905 TestSuite *XSDTestSuiteHandler::testSuite() const
906 {
907     return m_ts;
908 }
909 
910 // vim: et:ts=4:sw=4:sts=4
911 
912